Trong MariaDB, bạn có thể sử dụng DATE_FORMAT()
chức năng trả về các phần ngày tháng khác nhau từ một ngày tháng. Một trong những thứ bạn có thể trở lại là tên ngắn ngày. Ví dụ:Tue
hoặc Wed
(thay vì Tuesday
hoặc Wed
).
Định dạng "Tên ngày ngắn" (%a
)
Chìa khóa để trả về tên ngày ngắn khi sử dụng DATE_FORMAT()
chức năng là sử dụng công cụ định dạng thích hợp.
Trong MariaDB, định dạng chỉ định cho tên ngày ngắn là:%a
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT DATE_FORMAT('2023-07-25', '%a');
Kết quả:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Dưới đây là một ví dụ khác diễn ra vào các ngày khác nhau trong tuần:
SELECT
DATE_FORMAT('2023-07-24', '%a') AS "1",
DATE_FORMAT('2023-07-25', '%a') AS "2",
DATE_FORMAT('2023-07-26', '%a') AS "3",
DATE_FORMAT('2023-07-27', '%a') AS "4",
DATE_FORMAT('2023-07-28', '%a') AS "5",
DATE_FORMAT('2023-07-29', '%a') AS "6",
DATE_FORMAT('2023-07-30', '%a') AS "7";
Kết quả:
+------+------+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +------+------+------+------+------+------+------+ | Mon | Tue | Wed | Thu | Fri | Sat | Sun | +------+------+------+------+------+------+------+
Bạn cũng có thể trả về các đơn vị ngày và giờ khác, nhưng bài viết này đặc biệt về việc trả lại tên ngày ngắn. Xem Chuỗi định dạng MariaDB để biết danh sách các mã định dạng có thể được sử dụng với DATE_FORMAT()
.
Các cách tiếp cận khác
Có những cách khác để lấy tên ngày ngắn từ một ngày liên quan đến việc cắt bỏ phần đầu tiên của ngày.
Tuy nhiên, phương pháp này có thể dễ bị lỗi hơn phương pháp trên (cộng với nó phức tạp hơn). Bạn có thể nhận được một số kết quả không mong muốn khi sử dụng phương pháp này, đặc biệt là khi làm việc với các ngôn ngữ khác nhau.
Dưới đây là một số ví dụ để chứng minh ý tôi muốn nói.
Thay vì sử dụng %a
công cụ định dạng giống như chúng ta đã làm trong ví dụ trước, chúng ta có thể sử dụng %W
định dạng chỉ định để trả về tên ngày đầy đủ, sau đó trả về rút ngắn kết quả đó bằng một hàm như LEFT()
.
Ví dụ:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;
Kết quả:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Ngoài ra, chúng tôi có thể sử dụng một hàm như CAST()
để chuyển đổi sang kiểu dữ liệu chỉ có ba ký tự, chẳng hạn như sau:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;
Kết quả:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
Điều này hoạt động tốt khi làm việc với ngôn ngữ tiếng Anh (và có lẽ một số ngôn ngữ khác). Nhưng hãy xem điều gì sẽ xảy ra khi chúng ta chuyển sang một ngôn ngữ khác - giả sử, tiếng Nhật:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;
Kết quả:
+-----------+-----------+ | Full | Short | +-----------+-----------+ | 火曜日 | 火曜日 | +-----------+-----------+
Trong trường hợp này, không có sự khác biệt.
Ngược lại, đây là điều xảy ra khi chúng tôi sử dụng %a
định dạng chỉ định để trả về tên ngắn ngày:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;
Kết quả:
+-----------+-------+ | Full | Short | +-----------+-------+ | 火曜日 | 火 | +-----------+-------+
Vì vậy, tôi khuyên bạn nên sử dụng %a
công cụ định dạng bất cứ khi nào có thể.