Chuyển đổi Unix Timestamp sang chuỗi ngày giờ trong MySQL
Sử dụng hàm FROM_UNIXTIME() để chuyển đổi số giây từ epoch (1970-01-01) sang định dạng DATETIME/chuỗi tùy chỉnh.
Cú pháp
SELECT FROM_UNIXTIME(yourColumnName, '%Y-%m-%d %H:%i:%s') FROM yourTableName;
Các ký tự định dạng phổ biến
| Ký tự | Ý nghĩa | Ví dụ |
|---|---|---|
| %Y | Năm 4 chữ số | 2024 |
| %m | Tháng (01-12) | 01 |
| %d | Ngày (01-31) | 15 |
| %H | Giờ 24h (00-23) | 14 |
| %i | Phút (00-59) | 30 |
| %s | Giây (00-59) | 45 |
Ví dụ hoàn chỉnh
Tạo bảng lưu timestamp:
mysql> CREATE TABLE select_timestampDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ArrivalDateTime INT
-> );
Chèn timestamp (giây từ epoch):
mysql> INSERT INTO select_timestampDemo(ArrivalDateTime) VALUES (1546499730), (1546210820), (1496363157);
Chuyển đổi sang chuỗi ngày giờ:
mysql> SELECT FROM_UNIXTIME(ArrivalDateTime, '%Y-%m-%d %H:%i:%s') FROM select_timestampDemo;
Kết quả:
+-----------------------------------------------------+ | FROM_UNIXTIME(ArrivalDateTime, '%Y-%m-%d %H:%i:%s') | +-----------------------------------------------------+ | 2019-01-03 12:45:30 | | 2018-12-31 04:30:20 | | 2017-06-02 05:55:57 | +-----------------------------------------------------+
Hàm liên quan
UNIX_TIMESTAMP(): Ngược lại, chuyển DATETIME → timestampFROM_UNIXTIME(timestamp): Không có format → trả về DATETIMEDATE_FORMAT(FROM_UNIXTIME(ts), '%Y-%m-%d'): Chỉ lấy ngày
Lưu ý múi giờ
FROM_UNIXTIME() sử dụng múi giờ của session (@@session.time_zone). Đảm bảo múi giờ đúng cho ứng dụng.