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_TIMESTAMP | Insert: Auto NOW(), Update: ไม่เปลี่ยน |
DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Insert: Auto NOW(), Update: Auto NOW() |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP | Insert: Auto NOW(), Update: ไม่เปลี่ยน (MySQL 5.6+) |
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | Insert/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 ทุกที่