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

ตั้งค่า DEFAULT NOW() ให้ Datetime Column ใน MySQL

MySQL 5.6.5+ รองรับ DEFAULT CURRENT_TIMESTAMP สำหรับ DATETIME และ TIMESTAMP (ก่อนหน้านั้น TIMESTAMP เท่านั้น)

สร้างตารางมี Default NOW()

mysql> CREATE TABLE DefaultDateTimeDemo (
    -> MyTime DATETIME DEFAULT CURRENT_TIMESTAMP
    -> );

Insert โดยไม่ระบุค่า

mysql> INSERT INTO DefaultDateTimeDemo VALUES ();

ผลลัพธ์ (ได้ Current Timestamp อัตโนมัติ)

+---------------------+
| MyTime              |
+---------------------+
| 2018-11-09 11:58:47 |
+---------------------+

ตรวจสอบกับ NOW()

mysql> SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2018-11-09 11:58:40 |
+---------------------+

เวลาใกล้เคียงกัน (ต่างกันไม่กี่วินาทีจากการ Execute)

รูปแบบอื่นๆ

Column Definitionพฤติกรรม
DATETIME DEFAULT CURRENT_TIMESTAMPInsert: Auto NOW(), Update: ไม่เปลี่ยน
DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPInsert: Auto NOW(), Update: Auto NOW()
TIMESTAMP DEFAULT CURRENT_TIMESTAMPInsert: Auto NOW(), Update: ไม่เปลี่ยน (MySQL 5.6+)
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMPInsert/Update: Auto NOW() (Classic Behavior)

เพิ่ม Default ให้ Column เดิม

ALTER TABLE DefaultDateTimeDemo 
MODIFY MyTime DATETIME DEFAULT CURRENT_TIMESTAMP;
หมายเหตุ: DEFAULT CURRENT_TIMESTAMP ใช้ Session Time Zone หาก Application ใช้ Time Zone ต่างจาก Server ให้จัดการที่ App Layer หรือใช้ UTC ทุกที่