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.