การแปลง Unix Timestamp ด้วย FROM_UNIXTIME()
ฟังก์ชัน FROM_UNIXTIME() แปลง Unix Timestamp (วินาทีนับจาก 1970-01-01 UTC) ให้เป็นวันที่/เวลาในรูปแบบที่อ่านง่าย พร้อมรองรับ Format String ตามต้องการ
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่ม Timestamp:
mysql> CREATE TABLE timeConversionDemo (
-> dateTimeConversion BIGINT
-> );
Query OK, 0 rows affected (0.45 sec)
mysql> INSERT INTO timeConversionDemo VALUES(1554316200);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO timeConversionDemo VALUES(1546194600);
Query OK, 1 row affected (0.22 sec)
mysql> INSERT INTO timeConversionDemo VALUES(1511548200);
Query OK, 1 row affected (0.21 sec)
ข้อมูล Timestamp แบบดิบ:
mysql> SELECT * FROM timeConversionDemo;
+--------------------+
| dateTimeConversion |
+--------------------+
| 1554316200 |
| 1546194600 |
| 1511548200 |
+--------------------+
3 rows in set (0.00 sec)
แปลงเป็นรูปแบบ DD-MM-YYYY:
mysql> SELECT FROM_UNIXTIME(dateTimeConversion, '%d-%m-%Y') AS Conversion
-> FROM timeConversionDemo;
+------------+
| Conversion |
+------------+
| 04-04-2019 |
| 31-12-2018 |
| 25-11-2017 |
+------------+
3 rows in set (0.00 sec)
แปลงเป็นรูปแบบ MySQL Date (YYYY-MM-DD):
mysql> SELECT FROM_UNIXTIME(dateTimeConversion, '%Y-%m-%d') AS Conversion
-> FROM timeConversionDemo;
+------------+
| Conversion |
+------------+
| 2019-04-04 |
| 2018-12-31 |
| 2017-11-25 |
+------------+
3 rows in set (0.00 sec)
Format Specifiers ที่ใช้บ่อย
| Specifier | ความหมาย | ตัวอย่าง |
|---|---|---|
| %Y | ปี 4 หลัก | 2019 |
| %m | เดือน 01-12 | 04 |
| %d | วัน 01-31 | 04 |
| %H | ชั่วโมง 00-23 | 12 |
| %i | นาที 00-59 | 45 |
| %s | วินาที 00-59 | 56 |
| %T | เวลา HH:MM:SS | 12:45:56 |
คำสั่งแปลงพร้อมเวลา:
SELECT FROM_UNIXTIME(ts, '%Y-%m-%d %H:%i:%s') FROM table;
หมายเหตุ: FROM_UNIXTIME() ใช้ Time Zone ของ Session (ระบบ/เซิร์ฟเวอร์) หากต้องการ UTC คงที่ ให้ใช้ CONVERT_TZ(FROM_UNIXTIME(ts), @@session.time_zone, '+00:00') หรือตั้ง Session Time Zone ก่อน