Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

อะไรคือความแตกต่างระหว่าง MySQL NOW() และ SYSDATE()?


MySQL NOW() และ SYSDATE() ฟังก์ชันจะคืนค่าการประทับเวลาปัจจุบัน แต่ผลลัพธ์ของทั้งคู่ขึ้นอยู่กับเวลาดำเนินการ สิ่งนี้สร้างความแตกต่างอย่างมากระหว่างพวกเขา

ฟังก์ชัน NOW() ส่งคืนค่าเวลาคงที่ซึ่งระบุเวลาที่คำสั่งนั้นเริ่มทำงาน ในทางตรงกันข้าม ฟังก์ชัน SYSDATE() จะส่งกลับเวลาที่ถูกต้องที่คำสั่งดำเนินการ ตัวอย่างต่อไปนี้จะแสดงความแตกต่างระหว่างฟังก์ชันเหล่านี้ -

mysql> Select NOW(), SLEEP(5), NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(5) | NOW()               |
+---------------------+----------+---------------------+
| 2017-10-31 09:57:36 | 0        | 2017-10-31 09:57:36 |
+---------------------+----------+---------------------+
1 row in set (5.11 sec)

แบบสอบถามด้านบนแสดงให้เห็นว่าฟังก์ชัน NOW() ส่งกลับเวลาที่มันเริ่มดำเนินการ เพราะแม้หลังจาก 5 วินาทีของการสลีปของระบบ ก็จะคืนค่าเดิม

mysql> Select SYSDATE(), SLEEP(5), SYSDATE();

+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(5) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2017-10-31 09:58:13 | 0        | 2017-10-31 09:58:18 |
+---------------------+----------+---------------------+
1 row in set (5.00 sec)

ในการเปรียบเทียบ เคียวรีด้านบนแสดงให้เห็นว่าฟังก์ชัน SYSDATE() ส่งคืนเวลาที่ดำเนินการ เนื่องจากหลังจาก 5 วินาทีของการสลีปของระบบ ฟังก์ชันจะส่งกลับค่าที่เพิ่มขึ้นจริง 5 วินาที