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

Insert วันที่/เวลาปัจจุบันใน MySQL ด้วย NOW()

ใช้ฟังก์ชัน 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:SSDATETIME (Session Timezone)
CURRENT_TIMESTAMPYYYY-MM-DD HH:MM:SSDATETIME (Synonym NOW())
CURDATE()YYYY-MM-DDDATE
CURRENT_DATEYYYY-MM-DDDATE (Synonym)
CURTIME()HH:MM:SSTIME
CURRENT_TIMEHH:MM:SSTIME (Synonym)
UTC_TIMESTAMP()YYYY-MM-DD HH:MM:SSDATETIME (UTC)
UTC_DATE()YYYY-MM-DDDATE (UTC)
UTC_TIME()HH:MM:SSTIME (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)