Để chuyển đổi ngày từ định dạng dd.mm.yyyy sang YYYY-MM-DD trong MySQL, bạn sử dụng hàm STR_TO_DATE() kết hợp với DATE_FORMAT().
Cú pháp
-- Cách 1: Chỉ dùng STR_TO_DATE (trả về kiểu DATE)
SELECT STR_TO_DATE(ten_cot_ngay, '%d.%m.%Y') AS ngay_chuan FROM ten_bang;
-- Cách 2: Dùng DATE_FORMAT để đảm bảo định dạng chuỗi đầu ra
SELECT DATE_FORMAT(STR_TO_DATE(ten_cot_ngay, '%d.%m.%Y'), '%Y-%m-%d') AS ngay_chuan FROM ten_bang;
Các định dạng (format specifiers)
| Ký hiệu | Ý nghĩa |
|---|---|
%d | Ngày (01-31) |
%m | Tháng (01-12) |
%Y | Năm 4 chữ số (2024) |
%y | Năm 2 chữ số (24) |
Ví dụ minh họa
1. Tạo bảng kiểm thử
CREATE TABLE ConvertIntoDateFormat (
Id INT NOT NULL AUTO_INCREMENT,
LoginDate VARCHAR(30),
PRIMARY KEY(Id)
);
2. Chèn dữ liệu mẫu
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('11.01.2019');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('10.04.2017');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('21.10.2016');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('26.09.2018');
INSERT INTO ConvertIntoDateFormat(LoginDate) VALUES('25.12.2012');
3. Xem dữ liệu gốc
SELECT * FROM ConvertIntoDateFormat;
Kết quả:
+----+------------+
| Id | LoginDate |
+----+------------+
| 1 | 11.01.2019 |
| 2 | 10.04.2017 |
| 3 | 21.10.2016 |
| 4 | 26.09.2018 |
| 5 | 25.12.2012 |
+----+------------+
4. Chuyển đổi định dạng
-- Cách 1
SELECT STR_TO_DATE(LoginDate, '%d.%m.%Y') AS DateFormat FROM ConvertIntoDateFormat;
-- Cách 2 (khuyên dùng để đảm bảo định dạng chuỗi)
SELECT DATE_FORMAT(STR_TO_DATE(LoginDate, '%d.%m.%Y'), '%Y-%m-%d') AS DateFormat
FROM ConvertIntoDateFormat;
Kết quả (cả hai cách):
+------------+
| DateFormat |
+------------+
| 2019-01-11 |
| 2017-04-10 |
| 2016-10-21 |
| 2018-09-26 |
| 2012-12-25 |
+------------+
Lưu ý quan trọng
STR_TO_DATE()chuyển chuỗi thành kiểuDATE/DATETIMEDATE_FORMAT()chuyển kiểu ngày thành chuỗi theo định dạng chỉ định- Nên dùng cách 2 nếu cần kết quả là chuỗi có định dạng chính xác
YYYY-MM-DD - Nếu dữ liệu gốc đã là kiểu
DATE, chỉ cần dùngDATE_FORMAT()