В MySQL можете да използвате DATE_FORMAT()
функция с %b
спецификатор на формат, за да върне краткото име на месеца. Например, можете да върнете Jan
или Feb
вместо January
или Feb
.
Пример
SELECT DATE_FORMAT('2035-01-18', '%b');
Резултат:
Jan
Ето още един пример, който минава през различните месеци в годината:
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";
Резултат (с помощта на вертикален изход):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Можете да върнете и други единици за дата и час, но тази статия е свързана с връщането на краткото име на месеца.
Вижте MySQL Спецификатори на формата на датата за списък с спецификатори на формат, които могат да се използват с DATE_FORMAT()
.
Съкратете пълното име на месеца
Ако трябва да съкратите пълно име на месец, винаги можете да използвате функция като LEFT()
за да върнете само първите три знака (или колкото са ви необходими).
Пример:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Резултат:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
Като алтернатива бихме могли да използваме функция като CAST()
за да конвертирате в тип данни само с три знака, като този:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Резултат:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
В този случай получаваме предупреждение, защото съкращаваме по-дълга стойност:
show warnings;
Резултат:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Съкращаването на името на месеца по този начин може да е добре, когато работите с езици като английски, но имайте предвид, че може да не върне същия резултат като при използване на %b
спецификатор на формат.
За да демонстрирам какво имам предвид, ето какво се случва, когато превключвам сесията си да използвам тайландски език:
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;
Резултат:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Съкращаването на пълното име на месеца връща различен резултат от използването на %b
спецификатор на формат, за да върне краткото име на месеца.