V MySQL můžete použít DATE_FORMAT()
pomocí %b
specifikátor formátu pro vrácení krátkého názvu měsíce. Můžete například vrátit Jan
nebo Feb
místo January
nebo Feb
.
Příklad
SELECT DATE_FORMAT('2035-01-18', '%b');
Výsledek:
Jan
Zde je další příklad, který prochází různými měsíci v roce:
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";
Výsledek (při použití vertikálního výstupu):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Můžete vrátit i jiné jednotky data a času, ale tento článek je o vrácení krátkého názvu měsíce.
Seznam specifikátorů formátu, které lze použít s DATE_FORMAT()
, najdete v části MySQL Date Format Specifiers .
Zkraťte celý název měsíce
Pokud potřebujete zkrátit celý název měsíce, můžete vždy použít funkci jako LEFT()
vrátit pouze první tři znaky (nebo kolik jich potřebujete).
Příklad:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Výsledek:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
Alternativně bychom mohli použít funkci jako CAST()
převést na datový typ s pouze třemi znaky, jako je tento:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Výsledek:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
V tomto případě dostaneme varování, protože zkracujeme delší hodnotu:
show warnings;
Výsledek:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Zkrácení názvu měsíce takto může být v pořádku při práci s jazyky, jako je angličtina, ale mějte na paměti, že nemusí vrátit stejný výsledek jako při použití %b
specifikátor formátu.
Abych demonstroval, co tím myslím, zde je to, co se stane, když přepnu relaci na thajský jazyk:
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;
Výsledek:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Zkrácení celého názvu měsíce vrátí jiný výsledek než použití %b
specifikátor formátu pro návrat krátkého názvu měsíce.