В MariaDB можете да използвате DATE_FORMAT()
функция за връщане на различни части от дата от дата. Едно от нещата, които можете да върнете, е краткото име на месеца. Например Nov
или Dec
(вместо Nov
или December
).
Определителят на формата „Short Month Name“ (%b
)
Ключът за връщане на краткото име на месеца при използване на DATE_FORMAT()
функцията е да се използва приложимият спецификатор на формат.
В MariaDB спецификаторът на формата за краткото име на месеца е:%b
Пример
Ето пример за демонстрация:
SELECT DATE_FORMAT('2023-12-25', '%b');
Резултат:
+---------------------------------+ | DATE_FORMAT('2023-12-25', '%b') | +---------------------------------+ | Dec | +---------------------------------+
Ето още един пример, който минава през различните месеци в годината:
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";
Резултат (с помощта на вертикален изход):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Можете да върнете и други единици за дата и час, но тази статия е специално за връщането на краткото име на месеца. Вижте MariaDB Format String за списък с спецификатори на формат, които могат да се използват с DATE_FORMAT()
.
Други подходи
Има и други начини да получите краткото име на месеца от дата, които включват отрязване на първата част от месеца.
Това обаче може да бъде по-податливо на грешки от горния метод (плюс това е по-сложен). Можете да получите някои неочаквани резултати, когато използвате този метод, особено когато работите с различни езици.
Ето няколко примера, които да демонстрират какво имам предвид.
Вместо да използвате %b
спецификатор на формат, както направихме в предишния пример, можем да използваме %M
спецификатор на формат, за да върне пълното име на месеца, след което върнете съкратете този резултат с функция като LEFT()
.
Пример:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;
Резултат:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Като алтернатива бихме могли да използваме функция като CAST()
за да конвертирате в тип данни само с три знака, като този:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;
Резултат:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Това работи добре при работа с английски език (и може би някои други езици). Но нека видим какво се случва, когато преминем към друг език – да речем, тайландски:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;
Резултат:
+--------------------+-----------+ | Full | Short | +--------------------+-----------+ | ตุลาคม | ตุล | +--------------------+-----------+
Но ето какво се случва, когато използваме %b
спецификатор на формат, за да върне краткото име на месеца:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;
Резултат:
+--------------------+----------+ | Full | Short | +--------------------+----------+ | ตุลาคม | ต.ค. | +--------------------+----------+
Връща различен резултат.
Затова бих препоръчал да използвате %b
спецификатор на формат, когато е възможно.