Trong MySQL, bạn có thể sử dụng DATE_FORMAT()
hàm với %b
định dạng chỉ định để trả về tên tháng ngắn hạn. Ví dụ:bạn có thể trả về Jan
hoặc Feb
thay vì January
hoặc Feb
.
Ví dụ
SELECT DATE_FORMAT('2035-01-18', '%b');
Kết quả:
Jan
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('2035-01-18', '%b') AS "1",
DATE_FORMAT('2035-02-18', '%b') AS "2",
DATE_FORMAT('2035-03-18', '%b') AS "3",
DATE_FORMAT('2035-04-18', '%b') AS "4",
DATE_FORMAT('2035-05-18', '%b') AS "5",
DATE_FORMAT('2035-06-18', '%b') AS "6",
DATE_FORMAT('2035-07-18', '%b') AS "7",
DATE_FORMAT('2035-08-18', '%b') AS "8",
DATE_FORMAT('2035-09-18', '%b') AS "9",
DATE_FORMAT('2035-10-18', '%b') AS "10",
DATE_FORMAT('2035-11-18', '%b') AS "11",
DATE_FORMAT('2035-12-18', '%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ỉ là trả về tên tháng ngắn.
Xem Bộ chỉ định định dạng ngày trong MySQL để biết danh sách các mã định dạng có thể được sử dụng với DATE_FORMAT()
.
Rút ngắn Tên đầy đủ của Tháng
Nếu bạn cần rút ngắn tên tháng đầy đủ, bạn luôn có thể sử dụng một hàm như LEFT()
để chỉ trả lại ba ký tự đầu tiên (hoặc tuy nhiên bạn cần nhiều ký tự).
Ví dụ:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Kết quả:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
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('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Kết quả:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
Trong trường hợp này, chúng tôi nhận được cảnh báo vì chúng tôi đang cắt bớt một giá trị dài hơn:
show warnings;
Kết quả:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Việc rút ngắn tên tháng như thế này có thể tốt khi làm việc với các ngôn ngữ như tiếng Anh, nhưng hãy lưu ý rằng nó có thể không trả lại kết quả giống như khi sử dụng %b
bộ định dạng.
Để chứng minh ý tôi, đây là điều sẽ xảy ra khi tôi chuyển phiên của mình sang sử dụng tiếng Thái:
SET lc_time_names = 'th_TH';
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Truncated,
DATE_FORMAT('2023-10-25', '%b') AS Short;
Kết quả:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Việc cắt bớt tên tháng đầy đủ sẽ trả về một kết quả khác với việc sử dụng %b
định dạng chỉ định để trả về tên tháng ngắn.