NOW() และ CURDATE() ทั้งคู่คืนค่าเวลาปัจจุบัน แต่มีความแตกต่างในส่วนที่คืนค่า:
| ฟังก์ชัน | คืนค่า | ชนิดข้อมูล | ตัวอย่าง |
|---|---|---|---|
NOW() | วันที่และเวลาปัจจุบัน | DATETIME | 2018-11-27 15:17:01 |
CURDATE() | เฉพาะวันที่ปัจจุบัน | DATE | 2018-11-27 |
CURTIME() | เฉพาะเวลาปัจจุบัน | TIME | 15:17:01 |
ตัวอย่างการใช้งาน
NOW() - วันที่และเวลา
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-11-27 15:17:01 |
+---------------------+
1 row in set (0.00 sec)
CURDATE() - เฉพาะวันที่
mysql> SELECT CURDATE();
+------------+
| curdate() |
+------------+
| 2018-11-27 |
+------------+
1 row in set (0.00 sec)
ทดสอบกับตาราง
mysql> CREATE TABLE CurrentdateAndNowDemo (
-> Time DATETIME
-> );
Query OK, 0 rows affected (0.82 sec)
mysql> INSERT INTO CurrentdateAndNowDemo VALUES (NOW());
mysql> INSERT INTO CurrentdateAndNowDemo VALUES (CURDATE());
mysql> SELECT * FROM CurrentdateAndNowDemo;
+---------------------+
| Time |
+---------------------+
| 2018-11-27 15:16:32 | -- จาก NOW()
| 2018-11-27 00:00:00 | -- จาก CURDATE() (เวลาเป็น 00:00:00)
+---------------------+
2 rows in set (0.00 sec)
ฟังก์ชันเกี่ยวข้องอื่นๆ
SYSDATE()- คล้าย NOW() แต่คืนค่าเวลาที่ Execute จริง (NOW() คืนค่าเวลาเริ่มต้น Statement)UTC_DATE(),UTC_TIME(),UTC_TIMESTAMP()- เวลาในโซน UTCCURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP()- ตามมาตรฐาน ANSI SQL
กรณีใช้งานแนะนำ
- ใช้
NOW()/CURRENT_TIMESTAMP()สำหรับ Timestamp ของระบบ (created_at, updated_at) - ใช้
CURDATE()สำหรับวันที่งาน (business date, due_date) - ใช้
CURTIME()สำหรับเวลาเฉพาะ (opening_hours, shift_time)