Chuyển đổi định dạng ngày tháng trong MySQL
Kết hợp STR_TO_DATE() (parse chuỗi thành DATE) và DATE_FORMAT() (format DATE thành chuỗi) để chuyển đổi giữa các định dạng ngày tháng tùy ý.
1. Tạo bảng và chèn dữ liệu (chuỗi ngày tháng tiếng Anh)
mysql> CREATE TABLE DemoTable (DueDate VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('August 04,2019');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----------------+ | DueDate | +----------------+ | August 04,2019 | +----------------+
3. Chuyển đổi: Chuỗi 'August 04,2019' → DATE → Chuỗi '2019-08-04'
mysql> SET @stringToDate = (
SELECT DATE_FORMAT(STR_TO_DATE(DueDate, '%M %d,%Y'), '%Y-%m-%d')
FROM DemoTable
);
4. Hiển thị kết quả
mysql> SELECT @stringToDate;
+---------------+ | @stringToDate | +---------------+ | 2019-08-04 | +---------------+
Giải thích 2 hàm:
| Hàm | Chức năng | Ví dụ |
|---|---|---|
| STR_TO_DATE(str, format) | Parse chuỗi → DATE/DATETIME | STR_TO_DATE('August 04,2019', '%M %d,%Y') → 2019-08-04 |
| DATE_FORMAT(date, format) | Format DATE → chuỗi | DATE_FORMAT('2019-08-04', '%Y-%m-%d') → '2019-08-04' |
Các định dạng phổ biến:
| Specifier | Ý nghĩa | Ví dụ |
|---|---|---|
| %Y | Năm 4 chữ số | 2019 |
| %m | Tháng 2 chữ số | 08 |
| %d | Ngày 2 chữ số | 04 |
| %M | Tên tháng tiếng Anh | August |
| %W | Tên thứ | Sunday |
| %H:%i:%s | Giờ:Phút:Giây 24h | 14:30:00 |
Ứng dụng: Import dữ liệu từ CSV/Excel (dd/mm/yyyy, Month dd,yyyy...) → chuẩn hóa thành DATE để lưu trữ, query hiệu quả.