1. Giới thiệu
Trong cơ sở dữ liệu MySQL, bạn sẽ thường xuyên xử lý dữ liệu ngày và giờ. Các ngày được lưu trữ trong cơ sở dữ liệu được lưu dưới dạng định dạng chuẩn, nhưng khi hiển thị chúng cho người dùng, bạn thường muốn định dạng lại chúng để dễ đọc hơn. Đó là lúc hàm DATE_FORMAT trở nên hữu ích. Trong bài viết này, chúng tôi sẽ giới thiệu cách sử dụng hàm DATE_FORMAT và các tùy chọn định dạng khác nhau, và giải thích các cách áp dụng thực tế 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 là một hàm MySQL dùng để chuyển đổi dữ liệu ngày thành định dạng được chỉ định. Nó được sử dụng khi bạn muốn xuất ngày theo định dạng tùy ý thay vì định dạng mặc định YYYY-MM-DD hoặc định dạng datetime chuẩn. Ví dụ, nếu bạn muốn hiển thị ngày cho người dùng theo định dạng như “Sep 16, 2024”, hàm này 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 bạn muốn định dạng.format: Một chuỗi chỉ định định dạng ngày đầu ra.
Hãy xem một ví dụ cụ thể:
SELECT DATE_FORMAT('2024-09-16', '%Y-%m-%d') AS formatted_date;
Truy vấn này chuyển đổi ngày ‘2024-09-16’ thành định dạng “2024-09-16” và xuất ra nó.

3. Các Tham số Định dạng Ngày
3.1 Danh sách Các Chỉ định Định dạng
Hàm DATE_FORMAT hỗ trợ nhiều chỉ định định dạng. Dưới đây là danh sách các chỉ định thường dùng:
%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 định dạng 24 giờ (00 đến 23)%hhoặc%I: Giờ theo định dạng 12 giờ (01 đến 12)%i: Phút (00 đến 59)%s: Giây (00 đến 59)%p: AM hoặc PM
3.2 Các Ví dụ Thực tế
Hãy xem các ví dụ cụ thể về cách các chỉ định này ảnh hưởng đến đầu ra.
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', '%b %d, %Y') AS us_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;
Đầu ra của truy vấn này sẽ trông như sau:
full_format: 2024-09-16 14:35:59us_format: Sep 16, 2024european_format: 16/09/2024twelve_hour_format: 02:35 PM
4. Các Trường hợp Sử dụng Thực tế
4.1 Kịch bản 1: Tạo Báo cáo
Ví dụ, khi tạo báo cáo hàng tháng trong công ty, bạn có thể muốn hiển thị ngày theo định dạng kiểu “YYYY-MM”. Truy vấn sau định dạng ngày báo cáo cho mục đích đó.
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 xuất tổng doanh số hàng tháng từ dữ liệu bán hàng theo định dạng như “2024-09”.
4.2 Kịch bản 2: Giao diện Người dùng
DATE_FORMAT cũng hữu ích khi bạn muốn hiển thị ngày rõ ràng cho người dùng trong ứng dụng web. Ví dụ, bạn có thể sử dụng nó như thế này khi 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;
Điều này sẽ hiển thị ngày và giờ đăng nhập cuối cùng của người dùng như “2024-09-16 14:35”.
4.3 Kịch bản 3: Tối ưu hóa Truy vấn
Trong một số trường hợp, DATE_FORMAT cũng có thể hữu ích cho việc tối ưu hóa truy vấn cơ sở dữ liệu. Ví dụ, bạn có thể sử dụng định dạng khi trích xuất dữ liệu trong một khoảng ngày cụ thể.
SELECT
*
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';
Truy vấn này trích xuất tất cả các giao dịch xảy ra vào tháng 9 năm 2024.
5. Lưu ý và Các Thực hành Tốt nhất cho DATE_FORMAT
5.1 Các Xem xét về Hiệu suất
Nếu bạn sử dụng DATE_FORMAT thường xuyên, nó có thể ảnh hưởng đến hiệu suất. Đặc biệt, việc áp dụng lặp lại nó cho các tập dữ liệu lớn có thể tăng thời gian xử lý. Nếu cần, hãy xem xét lưu trữ các ngày đã được định dạng trước hoặc định dạng chúng ở mức ứng dụng.
5.2 Bản địa hóa
Khi xây dựng một hệ thống đa ngôn ngữ sử dụng DATE_FORMAT, bạn phải chú ý đến việc bản địa hóa. Vì các định dạng hiển thị ngày thay đổi theo quốc gia và khu vực, bạn có thể cần thay đổi định dạng động dựa trên locale của người dùng.
5.3 Định dạng nhất quán
Việc sử dụng các định dạng ngày nhất quán trên toàn bộ hệ thống là rất quan trọng để cải thiện trải nghiệm người dùng. Ví dụ, bằng cách sử dụng cùng một định dạng trong các biểu mẫu nhập liệu, phần hiển thị và báo cáo, bạn có thể tránh làm người dùng bối rối.
6. Tóm tắt
Hàm DATE_FORMAT là một công cụ mạnh mẽ để định dạng dữ liệu ngày một cách linh hoạt trong MySQL. Trong bài viết này, chúng tôi đã đề cập đến cách sử dụng cơ bản, các ví dụ thực tế và các lưu ý quan trọng cùng với các thực hành tốt nhất. Bằng cách sử dụng hàm này một cách hiệu quả, bạn có thể hiển thị ngày tháng một cách rõ ràng và thân thiện hơn với người dùng. Là bước tiếp theo, chúng tôi khuyến nghị học thêm các hoạt động ngày và giờ nâng cao hơn.
7. Tài liệu tham khảo
- Tài liệu chính thức của MySQL: DATE_FORMAT
- Vì các bài viết và hướng dẫn liên quan được cập nhật thường xuyên, hãy đảm bảo kiểm tra tài liệu chính thức và các blog kỹ thuật một cách định kỳ.
Chúng tôi hy vọng bài viết này giúp bạn hiểu và sử dụng hiệu quả hàm DATE_FORMAT.


