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.