V MariaDB můžete použít DATE_FORMAT()
funkce pro vrácení různých částí data z data. Jednou z věcí, které můžete vrátit, je krátký název měsíce. Například Nov
nebo Dec
(místo November
nebo Dec
).
Specifikátor formátu „Krátký název měsíce“ (%b
)
Klíč k vrácení krátkého názvu měsíce při použití DATE_FORMAT()
funkcí je použít příslušný specifikátor formátu.
V MariaDB je specifikátor formátu pro krátký název měsíce:%b
Příklad
Zde je příklad k demonstraci:
SELECT DATE_FORMAT('2023-12-25', '%b');
Výsledek:
+---------------------------------+ | DATE_FORMAT('2023-12-25', '%b') | +---------------------------------+ | Dec | +---------------------------------+
Zde je další příklad, který prochází různými měsíci v roce:
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";
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 konkrétně o vrácení krátkého názvu měsíce. Viz MariaDB Format Strings pro seznam specifikátorů formátu, které lze použít s DATE_FORMAT()
.
Další přístupy
Existují další způsoby, jak získat krátký název měsíce z data, které zahrnují odříznutí první části měsíce.
To však může být náchylnější k chybám než výše uvedená metoda (a navíc je komplikovanější). Při použití této metody můžete získat neočekávané výsledky, zejména při práci s různými jazyky.
Zde je několik příkladů, které demonstrují, co tím myslím.
Místo použití %b
specifikátor formátu, jako jsme to udělali v předchozím příkladu, mohli bychom použít %M
specifikátor formátu vrátí celý název měsíce a poté vrátí výsledek zkraťte pomocí funkce jako LEFT()
.
Příklad:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;
Výsledek:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
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('2023-10-25', '%M') AS Full,
CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;
Výsledek:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
To funguje dobře při práci s anglickým jazykem (a možná i některými dalšími jazyky). Ale podívejme se, co se stane, když přepneme na jiný jazyk – řekněme thajštinu:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;
Výsledek:
+--------------------+-----------+ | Full | Short | +--------------------+-----------+ | ตุลาคม | ตุล | +--------------------+-----------+
Zde je však to, co se stane, když použijeme %b
specifikátor formátu pro návrat krátkého názvu měsíce:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;
Výsledek:
+--------------------+----------+ | Full | Short | +--------------------+----------+ | ตุลาคม | ต.ค. | +--------------------+----------+
Vrátí jiný výsledek.
Takže bych doporučil použít %b
specifikátor formátu, kdykoli je to možné.