Níže je 5 funkcí, které vám umožňují vrátit číslo týdne z data v MariaDB. Čtyři vrátí pouze týden a jedna vrátí týden i rok dohromady.
WEEK() Funkce
WEEK() funkce vrací týden pro dané datum.
Příklad:
SELECT WEEK('2023-07-25'); Výsledek:
+--------------------+
| WEEK('2023-07-25') |
+--------------------+
| 30 |
+--------------------+
WEEK() 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 argument mode vynechán, hodnota default_week_format je použita systémová proměnná.
Viz Jak WEEK() Funguje v MariaDB, kde najdete další informace o režimech a příkladech každého z nich.
EXTRACT() Funkce
Funkce umožňuje extrahovat zadanou jednotku z data. Proto jej můžete použít k extrahování týdne (stejně jako jiných jednotek) z data.EXTRACT ()
Příklad:
SELECT EXTRACT(WEEK FROM '2023-07-25'); Výsledek:
+---------------------------------+ | EXTRACT(WEEK FROM '2023-07-25') | +---------------------------------+ | 30 | +---------------------------------+
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 týden (stejně jako jakoukoli jinou jednotku) z data. Existují různé možnosti pro vrácení čísla týdne v závislosti na tom, kterým dnem týden začíná atd.
Zde je příklad, který vrací týden v různých formách:
SELECT
DATE_FORMAT('2023-01-01', '%U') AS "%U",
DATE_FORMAT('2023-01-01', '%u') AS "%u",
DATE_FORMAT('2023-01-01', '%V') AS "%V",
DATE_FORMAT('2023-01-01', '%v') AS "%v"; Výsledek:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 01 | 00 | 01 | 52 | +------+------+------+------+
Zde je popis každého z těchto specifikátorů formátu:
| Specifikátor formátu | Popis |
|---|---|
%U | Číslo týdne (00-53), pokud je prvním dnem v týdnu neděle. |
%u | Číslo týdne (00-53), pokud je prvním dnem v týdnu pondělí. |
%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 . |
A zde je popis %X a %x jak je uvedeno ve výše uvedené tabulce:
| 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 . |
Můžeme kombinovat specifikátory formátu, abychom v případě potřeby vrátili rok a týden společně:
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 číslo týdne nebude vždy odrážet výše uvedené příklady – záleží na skutečném použitém datu.
Posuňme datum o rok dopředu:
SELECT
DATE_FORMAT('2024-01-01', '%U') AS "%U",
DATE_FORMAT('2024-01-01', '%u') AS "%u",
DATE_FORMAT('2024-01-01', '%V') AS "%V",
DATE_FORMAT('2024-01-01', '%v') AS "%v"; Výsledek:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 00 | 01 | 53 | 01 | +------+------+------+------+
Tentokrát dostaneme jinou sadu výsledků.
Zde je to, co se stane, když se přesuneme do roku:
SELECT
DATE_FORMAT('2024-12-12', '%U') AS "%U",
DATE_FORMAT('2024-12-12', '%u') AS "%u",
DATE_FORMAT('2024-12-12', '%V') AS "%V",
DATE_FORMAT('2024-12-12', '%v') AS "%v"; Výsledek:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 49 | 50 | 49 | 50 | +------+------+------+------+
Jak můžete vidět, vrácení čísla týdne není vždy tak jasné, jak bychom si možná přáli.
Úplný seznam formátovacích řetězců/specifikátorů, které lze použít s DATE_FORMAT(), najdete v části MariaDB Format Strings .
YEARWEEK() Funkce
Je možné získat týden a rok na jeden zátah. 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 |
+------------------------+
Stejně jako u WEEK() funkce 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 argument mode vynechán, 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.