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 วินาที