sql >> Databáze >  >> RDS >> MariaDB

5 funkcí pro extrakci čísla týdne z data v MariaDB

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

EXTRACT () 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.

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.


  1. SQL Server:Dotazujte se rychle, ale pomalu z procedury

  2. Odstraňte duplikáty z výsledků Count() v SQLite

  3. Mohu přidat UNIQUE omezení do tabulky PostgreSQL poté, co je již vytvořena?

  4. Bitmapy v dávkovém režimu na serveru SQL