Sử dụng FROM_UNIXTIME() chuyển timestamp thành DATETIME, sau đó DATE_FORMAT() để định dạng hiển thị.
Cú pháp
SELECT DATE_FORMAT(FROM_UNIXTIME(tên_cột), 'định_dạng_mong_muốn') FROM tên_bảng;
Ví dụ minh họa
Tạo bảng lưu Unix timestamp (giây từ 1970-01-01):
mysql> CREATE TABLE unixTimeStampFormatDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> MyTimeStampValue BIGINT
-> );
Query OK, 0 rows affected (0.59 sec)
Chèn các timestamp mẫu:
mysql> INSERT INTO unixTimeStampFormatDemo(MyTimeStampValue) VALUES
-> (1334428200), (1513881000), (1542738600), (1551637800);
Xem dữ liệu gốc:
mysql> SELECT * FROM unixTimeStampFormatDemo;
+----+------------------+ | Id | MyTimeStampValue | +----+------------------+ | 1 | 1334428200 | | 2 | 1513881000 | | 3 | 1542738600 | | 4 | 1551637800 | +----+------------------+
Chuyển đổi sang định dạng đọc được (tháng tên, ngày, năm, giờ 12h, AM/PM, timezone):
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 | +-----------------------------------------------------------------------+
Các định dạng DATE_FORMAT phổ biến
| Pattern | Kết quả ví dụ | Mô tả |
|---|---|---|
%Y-%m-%d %H:%i:%s | 2019-03-12 20:55:00 | DATETIME chuẩn ISO |
%d/%m/%Y | 12/03/2019 | Ngày/tháng/năm |
%W, %M %d, %Y | Tuesday, March 12, 2019 | Tên thứ, tên tháng |
%H:%i | 20:55 | Giờ:phút 24h |
%l:%i %p | 8:55 PM | Giờ:phút 12h AM/PM |
Chuyển ngược: DATETIME → Unix Timestamp
SELECT UNIX_TIMESTAMP('2019-03-12 20:55:00'); -- 1552421700
Lưu ý: FROM_UNIXTIME() sử dụng múi giờ của session (time_zone). Kiểm tra bằng SELECT @@time_zone;.