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 tháng ngắn ngủi. Ví dụ:Nov
hoặc Dec
(thay vì Nov
hoặc December
).
Định dạng "Tên tháng ngắn hạn" (%b
)
Chìa khóa để trả về tên tháng 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 tháng ngắn là:%b
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT DATE_FORMAT('2023-12-25', '%b');
Kết quả:
+---------------------------------+ | DATE_FORMAT('2023-12-25', '%b') | +---------------------------------+ | Dec | +---------------------------------+
Dưới đây là một ví dụ khác diễn ra qua các tháng khác nhau trong năm:
SELECT
DATE_FORMAT('2023-01-25', '%b') AS "1",
DATE_FORMAT('2023-02-25', '%b') AS "2",
DATE_FORMAT('2023-03-25', '%b') AS "3",
DATE_FORMAT('2023-04-25', '%b') AS "4",
DATE_FORMAT('2023-05-25', '%b') AS "5",
DATE_FORMAT('2023-06-25', '%b') AS "6",
DATE_FORMAT('2023-07-25', '%b') AS "7",
DATE_FORMAT('2023-08-25', '%b') AS "8",
DATE_FORMAT('2023-09-25', '%b') AS "9",
DATE_FORMAT('2023-10-25', '%b') AS "10",
DATE_FORMAT('2023-11-25', '%b') AS "11",
DATE_FORMAT('2023-12-25', '%b') AS "12";
Kết quả (sử dụng đầu ra dọc):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
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 chỉ nói riêng về việc trả lại tên tháng 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 tháng ngắn hạn từ một ngày liên quan đến việc cắt bỏ phần đầu tiên của tháng.
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 %b
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 %M
định dạng chỉ định để trả về tên tháng đầ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-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;
Kết quả:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
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-10-25', '%M') AS Full,
CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;
Kết quả:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Đ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ử như tiếng Thái:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;
Kết quả:
+--------------------+-----------+ | Full | Short | +--------------------+-----------+ | ตุลาคม | ตุล | +--------------------+-----------+
Tuy nhiên, đây là những gì sẽ xảy ra khi chúng tôi sử dụng %b
định dạng định dạng để trả về tên tháng ngắn:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;
Kết quả:
+--------------------+----------+ | Full | Short | +--------------------+----------+ | ตุลาคม | ต.ค. | +--------------------+----------+
Nó trả về một kết quả khác.
Vì vậy, tôi khuyên bạn nên sử dụng %b
công cụ định dạng bất cứ khi nào có thể.