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

MySQL: แทรกวันที่ปัจจุบันลงฐานข้อมูลด้วย NOW() และ CURDATE()

การบันทึกวันที่ปัจจุบันด้วย 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_TIMESTAMPDATETIMEDATETIME, TIMESTAMPมี ถ้าใส่ใน DATE
CURRENT_DATEDATEDATEไม่มี

เคล็ดลับเพิ่มเติม

  • DEFAULT CURRENT_TIMESTAMP ใน定义คอลัมน์ → ตั้งค่าอัตโนต็อกตอน INSERT
  • ON UPDATE CURRENT_TIMESTAMP → อัปเดตเวลาอัตโนต็อกตอน UPDATE
  • MySQL 8.0.13+ รองรับ DEFAULT (CURRENT_TIMESTAMP) และ ON UPDATE CURRENT_TIMESTAMP พร้อมกันได้