ชนิดข้อมูลที่เหมาะสมสำหรับเก็บค่า 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