Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chuyển chuỗi dd/mm/yyyy sang Unix timestamp trong MySQL

Dùng STR_TO_DATE parse chuỗi theo format '%d/%m/%Y' thành DATE, rồi UNIX_TIMESTAMP chuyển thành giây epoch.

Cú pháp

SELECT UNIX_TIMESTAMP(STR_TO_DATE(cot_varchar, '%d/%m/%Y')) AS unix_ts 
FROM ten_bang;

Ví dụ minh họa

Tạo bảng ConvertddmmyyyyInUnixTimeStamp:

CREATE TABLE ConvertddmmyyyyInUnixTimeStamp (
    Id INT NOT NULL AUTO_INCREMENT,
    Created_at VARCHAR(30), PRIMARY KEY (Id)
);

INSERT INTO ConvertddmmyyyyInUnixTimeStamp (Created_at) VALUES
('10/11/2012'), ('11/12/2013'), ('10/12/2012'),
('31/01/2015'), ('24/04/2016'), ('20/09/2017'), ('15/03/2018');

Truy vấn chuyển đổi

SELECT UNIX_TIMESTAMP(STR_TO_DATE(Created_at, '%d/%m/%Y')) AS UnixTimestamp 
FROM ConvertddmmyyyyInUnixTimeStamp;

Kết quả:

+---------------+
| UnixTimestamp |
+---------------+
| 1352485800    |
| 1386700200    |
| 1355077800    |
| 1422642600    |
| 1461436200    |
| 1505845800    |
| 1521052200    |
+---------------+

Lưu ý:

  • Format '%d/%m/%Y' khớp chính xác dd/mm/yyyy (có leading zero). Nếu dữ liệu có dạng d/m/yyyy (1/1/2020) thì dùng '%e/%c/%Y'.
  • Kết quả phụ thuộc time_zone session. UNIX_TIMESTAMP giả định input là local time zone.
  • MySQL 8.0+: Cân nhắc CAST(STR_TO_DATE(...) AS DATETIME) rồi UNIX_TIMESTAMP cho rõ ràng.