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_zonesession.UNIX_TIMESTAMPgiả định input là local time zone. - MySQL 8.0+: Cân nhắc
CAST(STR_TO_DATE(...) AS DATETIME)rồiUNIX_TIMESTAMPcho rõ ràng.