Kết hợp STR_TO_DATE() (parse chuỗi thành DATE) và DATE_FORMAT() (định dạng lại) để chuyển cột VARCHAR sang DATE chuẩn.
Cú pháp
SELECT DATE_FORMAT(STR_TO_DATE(cot_varchar, 'dinh_dang_nguon'), 'dinh_dang_dich')
FROM ten_bang;
Ví dụ minh họa
Tạo bảng VarcharToDate với cột Created_Time VARCHAR(100) lưu dạng dd/mm/yyyy:
INSERT INTO VarcharToDate (Created_Time) VALUES
('12/1/2016'), ('14/3/2017'), ('15/3/2018'),
('19/5/2011'), ('19/8/2019'), ('21/11/2020');
Truy vấn chuyển đổi
SELECT DATE_FORMAT(STR_TO_DATE(Created_Time, '%d/%m/%Y'), '%Y-%m-%d') AS Date
FROM VarcharToDate;
Kết quả (định dạng ISO yyyy-mm-dd):
+------------+
| Date |
+------------+
| 2016-01-12 |
| 2017-03-14 |
| 2018-03-15 |
| 2011-05-19 |
| 2019-08-19 |
| 2020-11-21 |
+------------+
Các định dạng thường dùng:
%d/%m/%Y→ 31/12/2023%Y-%m-%d→ 2023-12-31 (chuẩn ISO)%m/%d/%Y→ 12/31/2023 (phong cách US)
Lưu ý: Nếu chỉ cần so sánh/lọc theo ngày, có thể dùng trực tiếp STR_TO_DATE(cot, '%d/%m/%Y') mà không cần DATE_FORMAT.