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

ดึง Timestamp ใน MySQL ด้วย NOW(), CURRENT_TIMESTAMP, UNIX_TIMESTAMP

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 มาตรฐานสำหรับบันทึกลง DBNOW() หรือ CURRENT_TIMESTAMP()
Unix Timestamp สำหรับ API / ProgrammingUNIX_TIMESTAMP()
เฉพาะวันที่CURDATE()
เฉพาะเวลาCURTIME()
เวลา UTCUTC_TIMESTAMP()

คำสั่งสั้นแบบ SELECT @@

SELECT @@timestamp;  -- ค่า timestamp ของ session (ใช้ใน Replication)