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

ชนิดข้อมูลสำหรับ UNIX_TIMESTAMP ใน MySQL คือ INTEGER

ชนิดข้อมูลที่เหมาะสมสำหรับเก็บค่า UNIX_TIMESTAMP() คือ INT (หรือ INTEGER) เนื่องจาก:

  • ค่าที่คืนเป็นจำนวนเต็ม (วินาทีจาก Epoch 1970-01-01)
  • รองรับการเปรียบเทียบ (>, <=) และ Index ได้ดี
  • ขนาด 4 ไบต์ (INT(11)) พอสำหรับปี 2038 (Signed 32-bit)

ตัวอย่าง: แปลง DATETIME เป็น Unix Timestamp

mysql> CREATE TABLE UnixTime (DueTime DATETIME);
mysql> INSERT INTO UnixTime VALUES (NOW()), ('2010-10-14'), ('2020-09-24');
mysql> SELECT UNIX_TIMESTAMP(DueTime) AS Output FROM UnixTime;

ผลลัพธ์:

+------------+
| Output     |
+------------+
| 1545194231 |
| 1286994600 |
| 1600885800 |
+------------+

ข้อควรระวัง: ปี 2038 (Year 2038 Problem) INT Signed จะล้น ควรใช้ BIGINT หากต้องเก็บ Timestamp หลังปี 2038