Níže jsou uvedeny 4 funkce, které vám umožňují vrátit rok od data v MariaDB. Tři funkce vrátí pouze rok a jedna vrátí rok i týden.
YEAR()
Funkce
YEAR()
funkce vrací rok pro dané datum. Výsledek je v rozsahu 1000
na 9999
, nebo 0
pro data, která mají nulový rok (například 0000-00-00
).
Příklad:
SELECT YEAR('2023-07-25');
Výsledek:
+--------------------+ | YEAR('2023-07-25') | +--------------------+ | 2023 | +--------------------+
EXTRACT()
Funkce
Funkce umožňuje extrahovat zadanou jednotku z data. Proto jej můžete použít k extrahování roku (stejně jako jiných jednotek) z data.EXTRACT
()
Příklad:
SELECT EXTRACT(YEAR FROM '2023-07-25');
Výsledek:
+---------------------------------+ | EXTRACT(YEAR FROM '2023-07-25') | +---------------------------------+ | 2023 | +---------------------------------+
DATE_FORMAT()
Funkce
DATE_FORMAT()
Funkce umožňuje formátovat datum na základě formátovacího řetězce. Formátovací řetězec určuje, jak má být datum formátováno.
Pomocí této funkce tedy můžete vrátit rok (stejně jako jakoukoli jinou jednotku) z data. Existují různé specifikátory formátu pro vrácení roku v různých formátech. Například čtyřmístný rok, dvoumístný rok atd.
Zde je příklad, který vrací rok v různých formách:
SELECT
DATE_FORMAT('2023-01-01', '%X') AS "%X",
DATE_FORMAT('2023-01-01', '%x') AS "%x",
DATE_FORMAT('2023-01-01', '%Y') AS "%Y",
DATE_FORMAT('2023-01-01', '%y') AS "%y";
Výsledek:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2022 | 2023 | 23 | +------+------+------+------+
Všimněte si, že %x
vrátilo jiné číslo roku než ostatní.
Zde je popis každého z těchto specifikátorů formátu, který vysvětluje proč %x
vrátil jiný výsledek:
Specifikátor formátu | Popis |
---|---|
%X | Rok se 4 číslicemi, když prvním dnem v týdnu je neděle. Používá se s %V . |
%x | Rok se 4 číslicemi, když prvním dnem v týdnu je pondělí. Používá se s %v . |
%Y | Rok se 4 číslicemi. |
%y | Rok se 2 číslicemi. |
A zde je popis %V
a %v
jak je uvedeno ve výše uvedené tabulce:
Specifikátor formátu | Popis |
---|---|
%V | Číslo týdne (01-53), když prvním dnem v týdnu je neděle. Používá se s %X . |
%v | Číslo týdne (01-53), pokud je prvním dnem v týdnu pondělí. Používá se s %x . |
Mohli bychom tedy přidat tyto specifikátory formátu do výše uvedeného příkladu a získat následující:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Výsledek:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Všimněte si, že %x
nebude vždy vracet jiný rok – záleží na skutečném použitém datu. Někdy je to %X
který se vrátí do jiného roku než ostatní.
Posuňme datum o rok dopředu:
SELECT
DATE_FORMAT('2024-01-01', '%X') AS "%X",
DATE_FORMAT('2024-01-01', '%x') AS "%x",
DATE_FORMAT('2024-01-01', '%Y') AS "%Y",
DATE_FORMAT('2024-01-01', '%y') AS "%y";
Výsledek:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2023 | 2024 | 2024 | 24 | +------+------+------+------+
Tentokrát je to %X
to je zvláštní. Jak je vysvětleno v tabulce výše, záleží na tom, zda je prvním dnem v týdnu neděle nebo pondělí.
Pokud se přesuneme dále do roku, všechny specifikátory formátu se samozřejmě vrátí ve stejný rok:
SELECT
DATE_FORMAT('2024-12-12', '%X') AS "%X",
DATE_FORMAT('2024-12-12', '%x') AS "%x",
DATE_FORMAT('2024-12-12', '%Y') AS "%Y",
DATE_FORMAT('2024-12-12', '%y') AS "%y";
Výsledek:
+------+------+------+------+ | %X | %x | %Y | %y | +------+------+------+------+ | 2024 | 2024 | 2024 | 24 | +------+------+------+------+
Úplný seznam formátovacích řetězců/specifikátorů naleznete v části MariaDB Format Strings.
YEARWEEK()
Funkce
YEARWEEK()
funkce vrací rok a týden pro dané datum.
Příklad:
SELECT YEARWEEK('2023-01-01');
Výsledek:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Rok ve výsledku se může lišit od roku v argumentu data pro první a poslední týden v roce.
Když se posuneme o rok dopředu:
SELECT YEARWEEK('2024-01-01');
Výsledek:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
YEARWEEK()
funkce přijímá volitelný druhý argument k určení režimu. Skutečný výsledek, který touto funkcí získáte, bude záviset na používaném režimu. Pokud je vynechán argument mode, hodnota default_week_format
je použita systémová proměnná.
Viz Jak YEARWEEK()
Funguje v MariaDB, kde najdete další informace o režimech a příkladech každého z nich.