W MySQL możesz użyć DATE_FORMAT()
funkcja z %b
specyfikator formatu, aby zwrócić skróconą nazwę miesiąca. Na przykład możesz zwrócić Jan
lub Feb
zamiast January
lub February
.
Przykład
SELECT DATE_FORMAT('2035-01-18', '%b');
Wynik:
Jan
Oto kolejny przykład z różnych miesięcy w roku:
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";
Wynik (przy użyciu wyjścia pionowego):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Możesz również zwrócić inne jednostki daty i czasu, ale ten artykuł dotyczy zwracania skróconej nazwy miesiąca.
Zobacz Specyfikatory formatu daty MySQL, aby uzyskać listę specyfikatorów formatu, których można użyć z DATE_FORMAT()
.
Skróć pełną nazwę miesiąca
Jeśli potrzebujesz skrócić pełną nazwę miesiąca, zawsze możesz użyć funkcji takiej jak LEFT()
aby zwrócić tylko pierwsze trzy znaki (lub tyle, ile potrzebujesz).
Przykład:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Wynik:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
Moglibyśmy alternatywnie użyć funkcji takiej jak CAST()
przekonwertować na typ danych składający się tylko z trzech znaków, na przykład:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Wynik:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
W takim przypadku otrzymujemy ostrzeżenie, ponieważ obcinamy dłuższą wartość:
show warnings;
Wynik:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Skrócenie nazwy miesiąca w ten sposób może być w porządku podczas pracy z językami takimi jak angielski, ale pamiętaj, że może nie zwrócić takiego samego wyniku, jak przy użyciu %b
specyfikator formatu.
Aby zademonstrować, co mam na myśli, oto co się dzieje, gdy przełączam sesję na język tajski:
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;
Wynik:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Obcięcie pełnej nazwy miesiąca zwraca inny wynik niż użycie %b
specyfikator formatu, aby zwrócić skróconą nazwę miesiąca.