ใช้ฟังก์ชัน NOW() หรือ CURRENT_TIMESTAMP เพื่อ Insert วันที่และเวลาปัจจุบันลงตาราง
Syntax
INSERT INTO table_name (datetime_column) VALUES (NOW());
-- หรือ
INSERT INTO table_name (datetime_column) VALUES (CURRENT_TIMESTAMP);
ตัวอย่าง
CREATE TABLE CurrentDateTime (
CurrentTime DATETIME
);
INSERT INTO CurrentDateTime VALUES (NOW());
SELECT * FROM CurrentDateTime;
+---------------------+
| CurrentTime |
+---------------------+
| 2018-10-18 13:14:30 |
+---------------------+
ฟังก์ชันวันที่/เวลาที่เกี่ยวข้อง
| Function | คืนค่า | ประเภท |
|---|---|---|
| NOW() | YYYY-MM-DD HH:MM:SS | DATETIME (Session Timezone) |
| CURRENT_TIMESTAMP | YYYY-MM-DD HH:MM:SS | DATETIME (Synonym NOW()) |
| CURDATE() | YYYY-MM-DD | DATE |
| CURRENT_DATE | YYYY-MM-DD | DATE (Synonym) |
| CURTIME() | HH:MM:SS | TIME |
| CURRENT_TIME | HH:MM:SS | TIME (Synonym) |
| UTC_TIMESTAMP() | YYYY-MM-DD HH:MM:SS | DATETIME (UTC) |
| UTC_DATE() | YYYY-MM-DD | DATE (UTC) |
| UTC_TIME() | HH:MM:SS | TIME (UTC) |
Default Value สำหรับ Column (Auto Timestamp)
-- MySQL 5.6.5+ / 8.0+
CREATE TABLE events (
id INT PRIMARY KEY AUTO_INCREMENT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- Insert ไม่ต้องระบุ created_at
INSERT INTO events (id) VALUES (1);
-- created_at = NOW(), updated_at = NOW()
-- Update
UPDATE events SET id = 1 WHERE id = 1;
-- updated_at = NOW() (Auto)
Precision (Microseconds) - MySQL 5.6.4+
-- DATETIME(6) / TIMESTAMP(6) / TIME(6)
CREATE TABLE t (
created_at DATETIME(6) DEFAULT CURRENT_TIMESTAMP(6)
);
SELECT NOW(6);
-- 2024-01-15 10:30:45.123456
Best Practice
- ✅ ใช้
DEFAULT CURRENT_TIMESTAMPสำหรับ created_at - ✅ ใช้
ON UPDATE CURRENT_TIMESTAMPสำหรับ updated_at - ✅ ใช้ UTC ใน Database:
UTC_TIMESTAMP()หรือ SET time_zone = '+00:00' - ✅ ใช้ DATETIME(6) / TIMESTAMP(6) หากต้องการ Microsecond Precision
- ❌ อย่าใช้ Application-side Timestamp (Clock Skew)