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

แปลง Unix Timestamp เป็น Date/Time ใน MySQL ด้วย FROM_UNIXTIME และ DATE_FORMAT


คำสั่งหลัก

ใช้ FROM_UNIXTIME() แปลง timestamp → datetime แล้ว DATE_FORMAT() จัดรูปแบบ

รูปแบบคำสั่ง

SELECT DATE_FORMAT(FROM_UNIXTIME(yourColumnName), '%b %d, %Y %l:%i %p PDT') 
FROM yourTableName;

ตัวอย่างครบถ้วน

1. สร้างตารางเก็บ timestamp

mysql> create table unixTimeStampFormatDemo 
    -> ( 
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    -> MyTimeStampValue bigint 
    -> ); 
Query OK, 0 rows affected (0.59 sec)

2. เพิ่มข้อมูล timestamp ตัวอย่าง

mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1334428200); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1513881000); 
Query OK, 1 row affected (0.15 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1542738600); 
Query OK, 1 row affected (0.14 sec)
mysql> insert into unixTimeStampFormatDemo(MyTimeStampValue) values(1551637800); 
Query OK, 1 row affected (0.15 sec)

3. ดูข้อมูลดิบ

mysql> select * from unixTimeStampFormatDemo;
+----+------------------+
| Id | MyTimeStampValue |
+----+------------------+
| 1  | 1334428200       |
| 2  | 1513881000       |
| 3  | 1542738600       |
| 4  | 1551637800       |
+----+------------------+

4. แปลงเป็นรูปแบบอ่านง่าย

mysql> select date_format(from_unixtime(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') from unixTimeStampFormatDemo;
+-----------------------------------------------------------------------+
| date_format(from_unixtime(MyTimeStampValue), '%b %d, %Y %l:%i %p PDT') |
+-----------------------------------------------------------------------+
| Apr 15, 2012 12:00 AM PDT                                             |
| Dec 22, 2017 12:00 AM PDT                                             |
| Nov 21, 2018 12:00 AM PDT                                             |
| Mar 04, 2019 12:00 AM PDT                                             |
+-----------------------------------------------------------------------+

Format Specifiers ที่ใช้

Specifierความหมายตัวอย่าง
%bชื่อเดือนย่อ (Jan-Dec)Apr
%dวัน (01-31)15
%Yปี 4 หลัก2012
%lชั่วโมง 12h (1-12) ไม่มี leading zero12
%iนาที (00-59)00
%pAM/PMAM

รูปแบบยอดนิยมอื่นๆ

  • '%Y-%m-%d %H:%i:%s' → 2019-03-04 12:00:00 (ISO datetime)
  • '%d/%m/%Y' → 04/03/2019 (ไทย)
  • '%W, %M %d, %Y' → Monday, March 04, 2019

แปลงกลับ: DateTime → Unix Timestamp

SELECT UNIX_TIMESTAMP('2019-03-04 12:00:00');  -- → 1551637800

หมายเหตุ: FROM_UNIXTIME ใช้ timezone ของ server (system_time_zone) หากต้องการ timezone เฉพาะ ใช้ CONVERT_TZ()