MySQL มีหลายวิธีในการดึง Timestamp ปัจจุบัน เลือกใช้ตามความต้องการ:
1. CURRENT_TIMESTAMP() / NOW() - วันที่และเวลาแบบ DATETIME
mysql> SELECT CURRENT_TIMESTAMP();
+---------------------+
| CURRENT_TIMESTAMP() |
+---------------------+
| 2018-11-29 16:09:31 |
+---------------------+
1 row in set (0.00 sec)
mysql> SELECT NOW();
+---------------------+
| now() |
+---------------------+
| 2018-11-29 16:09:38 |
+---------------------+
1 row in set (0.00 sec)
ความแตกต่าง: NOW() คืนค่าเวลาเริ่มต้นของ Statement ส่วน SYSDATE() คืนค่าเวลาที่ Execute จริง (ใน Stored Procedure จะเห็นความต่างชัดเจน)
2. UNIX_TIMESTAMP() - Unix Timestamp (วินาทีจาก Epoch)
mysql> SELECT UNIX_TIMESTAMP();
+------------------+
| unix_timestamp() |
+------------------+
| 1543488374 |
+------------------+
1 row in set (0.04 sec)
หรือแปลงจาก DATETIME เฉพาะ:
SELECT UNIX_TIMESTAMP('2024-01-15 10:30:00');
3. แปลง Unix Timestamp กลับเป็น DATETIME
SELECT FROM_UNIXTIME(1543488374);
+---------------------------+
| FROM_UNIXTIME(1543488374) |
+---------------------------+
| 2018-11-29 16:09:34 |
+---------------------------+
1 row in set (0.00 sec)
สรุปการเลือกใช้
| ความต้องการ | ฟังก์ชันที่แนะนำ |
|---|---|
| Timestamp มาตรฐานสำหรับบันทึกลง DB | NOW() หรือ CURRENT_TIMESTAMP() |
| Unix Timestamp สำหรับ API / Programming | UNIX_TIMESTAMP() |
| เฉพาะวันที่ | CURDATE() |
| เฉพาะเวลา | CURTIME() |
| เวลา UTC | UTC_TIMESTAMP() |
คำสั่งสั้นแบบ SELECT @@
SELECT @@timestamp; -- ค่า timestamp ของ session (ใช้ใน Replication)