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

ความแตกต่างระหว่าง NOW() และ SYSDATE() ใน MySQL

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

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() คืนเวลาเดียวกัน แม้มี SLEEP(5) รอ 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 วินาที ตามเวลาจริงที่รัน