V MariaDB můžete použít DATE_FORMAT()
funkce pro vrácení různých částí data z data. Jedna z věcí, kterou můžete vrátit, je název krátkého dne. Například Tue
nebo Wed
(místo Tuesday
nebo Wednesday
).
Specifikátor formátu „Short Day Name“ (%a
)
Klíč k vrácení krátkého názvu dne 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 název krátkého dne:%a
Příklad
Zde je příklad k demonstraci:
SELECT DATE_FORMAT('2023-07-25', '%a');
Výsledek:
+---------------------------------+ | DATE_FORMAT('2023-07-25', '%a') | +---------------------------------+ | Tue | +---------------------------------+
Zde je další příklad, který prochází různými dny v týdnu:
SELECT
DATE_FORMAT('2023-07-24', '%a') AS "1",
DATE_FORMAT('2023-07-25', '%a') AS "2",
DATE_FORMAT('2023-07-26', '%a') AS "3",
DATE_FORMAT('2023-07-27', '%a') AS "4",
DATE_FORMAT('2023-07-28', '%a') AS "5",
DATE_FORMAT('2023-07-29', '%a') AS "6",
DATE_FORMAT('2023-07-30', '%a') AS "7";
Výsledek:
+------+------+------+------+------+------+------+ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +------+------+------+------+------+------+------+ | Mon | Tue | Wed | Thu | Fri | Sat | Sun | +------+------+------+------+------+------+------+
Můžete vrátit i jiné jednotky data a času, ale tento článek je konkrétně o vrácení názvu krátkého dne. 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 název krátkého dne z data, které zahrnují odříznutí první části dne.
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í %a
specifikátor formátu, jako jsme to udělali v předchozím příkladu, mohli bychom použít %W
specifikátor formátu, který vrátí celý název dne, a poté vrátí výsledek zkrátí pomocí funkce jako LEFT()
.
Příklad:
SELECT
DATE_FORMAT('2023-07-25', '%W') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W'), 3) AS Short;
Výsledek:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
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-07-25', '%W') AS Full,
CAST(DATE_FORMAT('2023-07-25', '%W') AS CHAR(3)) AS Short;
Výsledek:
+---------+-------+ | Full | Short | +---------+-------+ | Tuesday | Tue | +---------+-------+
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 japonštinu:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
LEFT(DATE_FORMAT('2023-07-25', '%W', 'ja_JP'), 3) AS Short;
Výsledek:
+-----------+-----------+ | Full | Short | +-----------+-----------+ | 火曜日 | 火曜日 | +-----------+-----------+
V tomto případě není rozdíl.
Naproti tomu zde je to, co se stane, když použijeme %a
specifikátor formátu pro návrat krátkého názvu dne:
SELECT
DATE_FORMAT('2023-07-25', '%W', 'ja_JP') AS Full,
DATE_FORMAT('2023-07-25', '%a', 'ja_JP') AS Short;
Výsledek:
+-----------+-------+ | Full | Short | +-----------+-------+ | 火曜日 | 火 | +-----------+-------+
Takže bych doporučil použít %a
specifikátor formátu, kdykoli je to možné.