การบันทึกวันที่ปัจจุบันด้วย NOW() และ CURDATE()
ฟังก์ชัน NOW() คืนค่า DateTime ปัจจุบัน (YYYY-MM-DD HH:MM:SS) ส่วน CURDATE() คืนค่า Date เท่านั้น (YYYY-MM-DD) หากคอลัมน์เป็นชนิด DATE การใช้ NOW() จะทำงานได้แต่ MySQL จะแจ้ง Warning (Truncated) แก้ได้โดยใช้ CURDATE()
ตัวอย่างการใช้งาน
สร้างตารางคอลัมน์ DATE:
mysql> CREATE TABLE insertcurrentdate (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> currentDate DATE
-> );
Query OK, 0 rows affected (1.09 sec)
แทรกด้วย NOW() (มี Warning) และ CURDATE() (ไม่มี Warning):
mysql> INSERT INTO insertcurrentdate(currentDate) VALUES(NOW());
Query OK, 1 row affected, 1 warning (0.24 sec)
mysql> INSERT INTO insertcurrentdate(currentDate) VALUES(CURDATE());
Query OK, 1 row affected (0.18 sec)
ตรวจสอบข้อมูล:
mysql> SELECT * FROM insertcurrentdate;
+----+-------------+
| Id | currentDate |
+----+-------------+
| 1 | 2019-04-05 |
| 2 | 2019-04-05 |
+----+-------------+
2 rows in set (0.00 sec)
สรุปการเลือกใช้
| ฟังก์ชัน | คืนค่า | เหมาะกับคอลัมน์ | Warning |
|---|---|---|---|
| NOW() | DATETIME (YYYY-MM-DD HH:MM:SS) | DATETIME, TIMESTAMP | มี ถ้าใส่ใน DATE |
| CURDATE() | DATE (YYYY-MM-DD) | DATE | ไม่มี |
| CURRENT_TIMESTAMP | DATETIME | DATETIME, TIMESTAMP | มี ถ้าใส่ใน DATE |
| CURRENT_DATE | DATE | DATE | ไม่มี |
เคล็ดลับเพิ่มเติม
DEFAULT CURRENT_TIMESTAMPใน定义คอลัมน์ → ตั้งค่าอัตโนต็อกตอน INSERTON UPDATE CURRENT_TIMESTAMP→ อัปเดตเวลาอัตโนต็อกตอน UPDATE- MySQL 8.0.13+ รองรับ
DEFAULT (CURRENT_TIMESTAMP)และON UPDATE CURRENT_TIMESTAMPพร้อมกันได้