1. Trước khi học về định dạng ngày trong MySQL: Kiến thức cơ bản
Quản lý dữ liệu ngày tháng trong cơ sở dữ liệu đóng vai trò quan trọng trong mọi hệ thống. Trong MySQL, việc lưu trữ chính xác và định dạng phù hợp là điều không thể thiếu. Tại đây, chúng tôi sẽ giới thiệu kiến thức cơ bản về cách lưu trữ và hiển thị ngày tháng, đồng thời giải thích về hàm DATE_FORMAT giúp định dạng dữ liệu hiệu quả.
1.1 Các kiểu dữ liệu ngày trong MySQL và đặc điểm
MySQL cung cấp nhiều kiểu dữ liệu để xử lý ngày và thời gian. Hiểu rõ mục đích sử dụng sẽ giúp bạn chọn đúng kiểu dữ liệu và tối ưu hiệu suất cơ sở dữ liệu.
- DATE
Lưu trữ ngày ở dạng “YYYY-MM-DD”. Phù hợp với dữ liệu ngày đơn giản không cần thời gian, ví dụ ngày sinh hoặc ngày sự kiện. Ví dụ:2024-10-19
- DATETIME
Lưu cả ngày và giờ. Định dạng “YYYY-MM-DD HH:MM:SS”, tiện lợi để quản lý dữ liệu có kèm thời gian như nhật ký hoặc log. Ví dụ:2024-10-19 15:30:45
- TIMESTAMP
Lưu trữ theo UNIX timestamp (số giây từ ngày 1/1/1970), thường dùng trong hệ thống đa múi giờ. Có thể lấy thời gian hiện tại bằngCURRENT_TIMESTAMP
.
Việc lựa chọn kiểu ngày tháng cần được thực hiện cẩn thận dựa trên yêu cầu ứng dụng, giúp tăng tính chính xác và hiệu quả khi truy vấn dữ liệu.
1.2 Khác biệt giữa lưu trữ và hiển thị ngày tháng
Khi lưu ngày tháng trong MySQL, dữ liệu được lưu ở định dạng chuẩn, nhưng khi hiển thị cho người dùng thì thường cần định dạng dễ đọc hơn. Lúc này, hàm DATE_FORMAT sẽ rất hữu ích, cho phép xuất dữ liệu với định dạng tùy chỉnh.
Trong phần tiếp theo, chúng ta sẽ tìm hiểu chi tiết về cách dùng DATE_FORMAT và các ứng dụng thực tế.

2. Cách sử dụng cơ bản của hàm DATE_FORMAT
DATE_FORMAT dùng để định dạng ngày tháng đã lưu theo mẫu chỉ định. Nhờ các ký hiệu định dạng linh hoạt, bạn có thể tùy chỉnh nhiều kiểu hiển thị khác nhau.
2.1 Cú pháp của DATE_FORMAT
DATE_FORMAT(date, format)
date
: Dữ liệu ngày cần định dạng (DATE, DATETIME, TIMESTAMP, …).format
: Chuỗi định dạng đầu ra, sử dụng các ký hiệu bắt đầu bằng%
.
Ví dụ, câu lệnh sau sẽ hiển thị ngày ở định dạng “YYYY/MM/DD”:
SELECT DATE_FORMAT('2024-10-19', '%Y/%m/%d');
Kết quả:
2024/10/19
2.2 Các ký hiệu định dạng phổ biến
DATE_FORMAT hỗ trợ nhiều ký hiệu định dạng để tùy chỉnh ngày giờ. Một số ký hiệu thường dùng:
%Y
: Năm 4 chữ số (ví dụ: 2024)%m
: Tháng 2 chữ số (01–12)%d
: Ngày 2 chữ số (01–31)%W
: Tên thứ (ví dụ: Saturday)%H
: Giờ (00–23, theo 24h)%i
: Phút (00–59)%s
: Giây (00–59)
Ví dụ, truy vấn sau sẽ hiển thị thứ, năm, tháng và ngày:
SELECT DATE_FORMAT('2024-10-19', '%W, %Y-%m-%d');
Kết quả:
Saturday, 2024-10-19
2.3 Định dạng kiểu tiếng Nhật
Bạn cũng có thể dùng DATE_FORMAT để xuất ngày theo kiểu Nhật. Ví dụ:
SELECT DATE_FORMAT('2024-10-19', '%Y年%m月%d日');
Kết quả:
2024年10月19日
Thường dùng trong báo cáo, hóa đơn hoặc tài liệu tiếng Nhật.
3. Thủ thuật nâng cao với DATE_FORMAT
Kết hợp DATE_FORMAT với các hàm MySQL khác có thể giúp xử lý ngày tháng mạnh mẽ hơn.
3.1 Kết hợp với các hàm ngày khác
Có thể dùng với DATE_ADD, DATE_SUB để thao tác ngày động.
Ví dụ: Cộng thêm 1 tháng và định dạng
SELECT DATE_FORMAT(DATE_ADD('2024-10-19', INTERVAL 1 MONTH), '%Y-%m-%d');
Kết quả:
2024-11-19
3.2 Kết hợp với STR_TO_DATE
STR_TO_DATE chuyển chuỗi thành ngày. Khi kết hợp với DATE_FORMAT, bạn có thể chuyển chuỗi thành kiểu ngày rồi định dạng lại.
Ví dụ: Chuyển chuỗi sang ngày và định dạng
SELECT DATE_FORMAT(STR_TO_DATE('2024年10月19日', '%Y年%c月%e日'), '%Y/%m/%d');
Kết quả:
2024/10/19

4. Ví dụ định dạng ngày thường dùng
Dưới đây là một số định dạng ngày phổ biến trong công việc và hệ thống:
4.1 Ngày với dấu gạch chéo
SELECT DATE_FORMAT('2024-10-19', '%Y/%m/%d');
Kết quả:
2024/10/19
4.2 Định dạng ISO 8601
SELECT DATE_FORMAT('2024-10-19', '%Y-%m-%d');
Kết quả:
2024-10-19
4.3 Hiển thị tên tháng và thứ
SELECT DATE_FORMAT('2024-10-19', '%M %W');
Kết quả:
October Saturday
5. Kết luận
Hàm DATE_FORMAT là công cụ mạnh mẽ trong MySQL để tùy chỉnh hiển thị ngày tháng. Từ cơ bản đến nâng cao, kết hợp với các hàm khác như STR_TO_DATE hoặc DATE_ADD, bạn có thể xử lý dữ liệu ngày linh hoạt và tối ưu hóa hệ thống.
Hãy áp dụng các kỹ thuật này để quản lý dữ liệu ngày hiệu quả hơn trong ứng dụng và cơ sở dữ liệu của bạn.