Hàm DATE_FORMAT() chuyển đổi giá trị DATE, DATETIME, TIMESTAMP thành chuỗi theo định dạng tuỳ ý. Rất hữu ích cho hiển thị báo cáo, xuất file, API.
Cú pháp
SELECT DATE_FORMAT(ten_cot, 'mau_dinh_dang') FROM ten_bang;
Ví dụ: Định dạng 'Ngày Tháng Năm' (11 Jan 19)
mysql> CREATE TABLE DemoTable (DueDate DATE);
mysql> INSERT INTO DemoTable VALUES ('2019-01-11'), ('2019-12-21'), ('2019-09-15');
mysql> SELECT DATE_FORMAT(DueDate, '%e %b %y') FROM DemoTable;
Kết quả:
+----------------------------------+ | DATE_FORMAT(DueDate, '%e %b %y') | +----------------------------------+ | 11 Jan 19 | | 21 Dec 19 | | 15 Sep 19 | +----------------------------------+
Bảng mã định dạng thường dùng
| Mã | Ý nghĩa | Ví dụ |
|---|---|---|
%Y | Năm 4 chữ số | 2019 |
%y | Năm 2 chữ số | 19 |
%m | Tháng 2 chữ số | 01 |
%c | Tháng không đệm 0 | 1 |
%b | Tên tháng viết tắt | Jan |
%M | Tên tháng đầy đủ | January |
%d | Ngày 2 chữ số | 11 |
%e | Ngày không đệm 0 | 11 |
%W | Tên thứ đầy đủ | Friday |
%a | Tên thứ viết tắt | Fri |
Mẫu định dạng phổ biến
- ISO 8601:
'%Y-%m-%d'→ 2019-01-11 - Việt Nam:
'%d/%m/%Y'→ 11/01/2019 - Đầy đủ:
'%W, %d %M %Y'→ Friday, 11 January 2019 - Giờ:
'%H:%i:%s'→ 12:34:45
Lưu ý
- Kết quả kiểu
VARCHAR– không dùng cho so sánh/ tính toán ngày. - Ngôn ngữ tên tháng/thứ phụ thuộc biến
lc_time_names(mặc định 'en_US'). ĐặtSET lc_time_names = 'vi_VN';cho tiếng Việt. - MySQL 8.0+: có thêm
FORMAT()cho số, nhưng ngày vẫn dùng DATE_FORMAT.