1. Giới thiệu
Trong cơ sở dữ liệu MySQL, việc xử lý dữ liệu ngày và giờ diễn ra thường xuyên. Ngày được lưu trữ trong cơ sở dữ liệu theo định dạng tiêu chuẩn, nhưng khi hiển thị cho người dùng, chúng ta thường muốn định dạng lại để dễ nhìn hơn. Lúc này, hàm DATE_FORMAT
sẽ phát huy tác dụng. Bài viết này sẽ giới thiệu cách sử dụng hàm DATE_FORMAT
, các tuỳ chọn định dạng khác nhau và giải thích cách áp dụng thông qua các ví dụ thực tế.
2. Tổng quan về hàm DATE_FORMAT
2.1 Hàm DATE_FORMAT là gì?
Hàm DATE_FORMAT
trong MySQL dùng để chuyển đổi dữ liệu ngày tháng sang định dạng chỉ định. Không chỉ định dạng mặc định kiểu YYYY-MM-DD hay kiểu ngày giờ, bạn có thể tuỳ ý xuất ra ngày tháng theo bất kỳ định dạng nào mong muốn. Ví dụ, nếu bạn muốn hiển thị ngày cho người dùng theo kiểu “16 Tháng 9 năm 2024”, hàm này sẽ rất hữu ích.
2.2 Cú pháp cơ bản
Cú pháp cơ bản của hàm DATE_FORMAT
như sau:
DATE_FORMAT(date, format)
date
: Dữ liệu ngày tháng cần thay đổi định dạng.format
: Chuỗi định dạng mong muốn xuất ra.
Hãy cùng xem ví dụ cụ thể:
SELECT DATE_FORMAT('2024-09-16', '%Y年%m月%d日') AS formatted_date;
Câu truy vấn này sẽ chuyển đổi ngày ‘2024-09-16’ thành định dạng “2024年09月16日” khi xuất ra.

3. Các tham số định dạng ngày tháng
3.1 Danh sách các ký hiệu định dạng
Hàm DATE_FORMAT
hỗ trợ nhiều ký hiệu định dạng khác nhau. Dưới đây là danh sách những ký hiệu chính:
%Y
: Năm 4 chữ số (ví dụ: 2024)%y
: Năm 2 chữ số (ví dụ: 24)%m
: Tháng 2 chữ số (01 đến 12)%c
: Tháng (1 đến 12)%d
: Ngày 2 chữ số (01 đến 31)%e
: Ngày (1 đến 31)%H
: Giờ theo hệ 24 (00 đến 23)%h
hoặc%I
: Giờ theo hệ 12 (01 đến 12)%i
: Phút (00 đến 59)%s
: Giây (00 đến 59)%p
: AM hoặc PM
3.2 Ví dụ thực tế
Hãy xem các ví dụ cụ thể khi sử dụng những ký hiệu trên:
SELECT
DATE_FORMAT('2024-09-16 14:35:59', '%Y-%m-%d %H:%i:%s') AS full_format,
DATE_FORMAT('2024-09-16 14:35:59', '%Y年%m月%d日') AS japanese_format,
DATE_FORMAT('2024-09-16 14:35:59', '%d/%m/%Y') AS european_format,
DATE_FORMAT('2024-09-16 14:35:59', '%h:%i %p') AS twelve_hour_format;
Kết quả xuất ra của truy vấn này sẽ là:
full_format
: 2024-09-16 14:35:59japanese_format
: 2024年09月16日european_format
: 16/09/2024twelve_hour_format
: 02:35 PM
4. Các ví dụ sử dụng thực tiễn
4.1 Tình huống 1: Tạo báo cáo
Chẳng hạn, khi tạo báo cáo hàng tháng cho doanh nghiệp, bạn muốn hiển thị ngày tháng theo kiểu “YYYY年MM月”. Truy vấn sau sẽ giúp bạn định dạng ngày tháng trong báo cáo như vậy:
SELECT
DATE_FORMAT(sale_date, '%Y年%m月') AS report_month,
SUM(sales) AS total_sales
FROM sales_data
GROUP BY report_month;
Truy vấn này sẽ xuất tổng doanh số hàng tháng với định dạng như “2024年09月”.
4.2 Tình huống 2: Giao diện người dùng
Hàm DATE_FORMAT
cũng rất hữu ích khi hiển thị ngày tháng cho người dùng trong các ứng dụng web. Ví dụ, khi bạn muốn hiển thị ngày đăng nhập cuối cùng trên trang hồ sơ người dùng:
SELECT
user_name,
DATE_FORMAT(last_login, '%Y/%m/%d %H:%i') AS last_login_formatted
FROM users;
Nhờ đó, ngày giờ đăng nhập cuối cùng sẽ được hiển thị như “2024/09/16 14:35”.
4.3 Tình huống 3: Tối ưu hóa truy vấn
DATE_FORMAT
cũng giúp ích khi bạn muốn lọc dữ liệu trong một khoảng thời gian nhất định. Ví dụ, để lấy các giao dịch diễn ra trong tháng 9 năm 2024:
SELECT
*
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';
Truy vấn này sẽ lấy tất cả giao dịch diễn ra trong tháng 9 năm 2024.
5. Lưu ý và các best practice khi sử dụng DATE_FORMAT
5.1 Lưu ý về hiệu suất
Việc sử dụng DATE_FORMAT
nhiều lần trên dữ liệu lớn có thể ảnh hưởng đến hiệu suất truy vấn. Nếu cần thiết, bạn nên lưu sẵn ngày đã định dạng hoặc xử lý định dạng ở cấp ứng dụng để giảm tải cho cơ sở dữ liệu.
5.2 Đa ngôn ngữ (Localization)
Khi xây dựng hệ thống đa ngôn ngữ, cần lưu ý rằng định dạng ngày tháng khác nhau tuỳ vào từng quốc gia, khu vực. Hãy đảm bảo thay đổi định dạng ngày tháng phù hợp với ngôn ngữ và khu vực của người dùng.
5.3 Đảm bảo tính nhất quán định dạng
Việc duy trì một định dạng ngày tháng nhất quán trên toàn hệ thống (form nhập liệu, phần hiển thị, báo cáo, v.v.) là rất quan trọng để tránh gây nhầm lẫn cho người dùng.
6. Kết luận
Hàm DATE_FORMAT
là một công cụ mạnh mẽ giúp định dạng dữ liệu ngày tháng trong MySQL một cách linh hoạt. Bài viết đã hướng dẫn từ cách sử dụng cơ bản, ví dụ thực tiễn đến những lưu ý quan trọng khi triển khai. Bằng cách áp dụng hàm này, bạn có thể cải thiện trải nghiệm người dùng với cách trình bày ngày tháng rõ ràng, dễ hiểu. Bước tiếp theo, hãy tìm hiểu sâu hơn về các thao tác ngày giờ trong MySQL.
7. Tài liệu tham khảo
- Tài liệu chính thức MySQL: DATE_FORMAT
- Đối với các bài viết liên quan hoặc hướng dẫn khác, hãy thường xuyên cập nhật từ tài liệu chính thức và các blog chuyên ngành.
Hy vọng bài viết này giúp bạn hiểu rõ và ứng dụng tốt hàm DATE_FORMAT
trong thực tế.