V MariaDB WEEK() je vestavěná funkce data a času, která vrací týden z daného výrazu data.
Přijímá dva argumenty; datum, ze kterého chcete extrahovat týden, a volitelný argument režimu pro určení režimu, který se má ve výsledku použít.
Vrátí týden jako číslo v rozsahu 0 až 53 nebo 1 až 53 , v závislosti na používaném režimu.
Syntaxe
Syntaxe vypadá takto:
WEEK(date[,mode])
Kde date je výraz data, ze kterého se získá týden, a mode je volitelný argument, který vám umožňuje určit režim, který se má použít.
Režimy
Volitelný mode argument určuje, zda týden začíná v neděli nebo pondělí a zda má být návratová hodnota v rozsahu od 0 až 53 nebo od 1 až 53 .
Argument režimu může být kterýkoli z následujících:
| Režim | 1. den v týdnu | Rozsah | Týden 1 je 1. týden s… |
|---|---|---|---|
| 0 | Neděle | 0–53 | neděle v tomto roce |
| 1 | pondělí | 0–53 | více než 3 dny v tomto roce |
| 2 | Neděle | 1-53 | neděle v tomto roce |
| 3 | pondělí | 1-53 | více než 3 dny v tomto roce (v souladu s ISO 8601:1988) |
| 4 | Neděle | 0–53 | více než 3 dny v tomto roce |
| 5 | pondělí | 0–53 | pondělí v tomto roce |
| 6 | Neděle | 1-53 | více než 3 dny v tomto roce |
| 7 | pondělí | 1-53 | pondělí v tomto roce |
Pokud je argument mode vynechán, hodnota default_week_format je použita systémová proměnná.
Pojďme zkontrolovat hodnotu mého default_week_format systémová proměnná:
SELECT @@default_week_format; Výsledek:
+-----------------------+| @@default_week_format |+-----------------------+| 0 |+-----------------------+
Nyní, když spustím WEEK() bez určení režimu použije režim 0 .
Příklad
Zde je příklad volání WEEK() bez určení režimu:
SELECT WEEK('2030-01-01'); Výsledek:
+---------------------+| TÝDEN('2030-01-01') |+---------------------+| 0 |+--------------------+ Určete režim
Zde je příklad určení režimu:
SELECT WEEK('2030-01-01', 1); Výsledek:
+-----------------------+| TÝDEN('2030-01-01', 1) |+------------------------+| 1 |+-----------------------+
Tentokrát je výsledek 1 místo 0 .
Pojďme si projít všechny režimy pro stejné datum:
SELECT
WEEK('2030-01-01', 0),
WEEK('2030-01-01', 1),
WEEK('2030-01-01', 2),
WEEK('2030-01-01', 3),
WEEK('2030-01-01', 4),
WEEK('2030-01-01', 5),
WEEK('2030-01-01', 6),
WEEK('2030-01-01', 7); Výsledek (při použití vertikálního výstupu):
WEEK('2030-01-01', 0):0WEEK('2030-01-01', 1):1WEEK('2030-01-01', 2):52WEEK('2030-01-01 ', 3):1WEEK('2030-01-01', 4):1WEEK('2030-01-01', 5):0WEEK('2030-01-01', 6):1WEEK('2030-01 -01', 7):53 Hodnoty data a času
WEEK() funkce také pracuje s hodnotami datetime:
SELECT WEEK('2030-08-01 10:30:45'); Výsledek:
+-----------------------------+| TÝDEN('2030-08-01 10:30:45') |+-----------------------------+| 30 |+-----------------------------+ Číselná data
Je také možné předávat data jako číslo, pokud to dává smysl jako datum.
Příklad
SELECT WEEK(20301125); Výsledek:
+-----------------+| TÝDEN(20301125) |+----------------+| 47 |+----------------+
Nebo dokonce následující (který používá dvouciferný rok):
SELECT WEEK(301125); Výsledek:
+---------------+| TÝDEN(301125) |+---------------+| 47 |+--------------+
Ale jako rande to musí dávat smysl. Když zvětším část dne na neplatný den, stane se toto:
SELECT WEEK(20301135); Výsledek:
+-----------------+| TÝDEN(20301135) |+----------------+| NULL |+----------------+1 řádek v sadě, 1 upozornění (0,001 s)
Vrátil null s varováním.
Podívejme se na varování:
SHOW WARNINGS; Výsledek:
+---------+------+----------------------------- ---------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ --------+| Upozornění | 1292 | Nesprávná hodnota data a času:'20301135' |+---------+------+------------------------- --------------+
Další oddělovače
Pro datum můžete použít jiné oddělovače. MariaDB je docela shovívavá, pokud jde o oddělovače dat. Zde je několik platných příkladů:
SELECT
WEEK('2030/06/25'),
WEEK('2030,06,25'),
WEEK('2030:06:25'),
WEEK('2030;06!25'); Výsledek (při použití vertikálního výstupu):
WEEK('2030/06/25'):25WEEK('2030,06,25'):25WEEK('2030:06:25'):25WEEK('2030;06!25'):25 Aktuální datum
Můžeme předat NOW() jako argument datetime pro použití aktuálního data:
SELECT
NOW(),
WEEK(NOW());
Výsledek:
+---------------------+-------------+| NYNÍ() | TÝDEN(NYNÍ()) |+---------------------+-------------+| 2021-05-17 08:36:12 | 20 |+---------------------+-------------+
Neplatné argumenty
Při předání neplatného argumentu WEEK() vrátí null :
SELECT WEEK('2030-65-78');
Výsledek:
+---------------------+| TÝDEN('2030-65-78') |+---------------------+| NULL |+--------------------+1 řádek v sadě, 1 upozornění (0,000 s)
Ukažme varování:
SHOW WARNINGS;
Výsledek:
+---------+------+----------------------------- -----------+| Úroveň | Kód | Zpráva |+---------+------+------------------------------ ----------+| Upozornění | 1292 | Nesprávná hodnota data a času:'2030-65-78' |+---------+------+--------------------- --------------------+
Chybí argument
Volání WEEK() s nesprávným počtem argumentů nebo bez předání jakýchkoli argumentů vede k chybě:
SELECT WEEK();
Výsledek:
ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi blízko ')' na řádku 1
A další příklad:
SELECT WEEK('2030-12-10', 1, 2);
Výsledek:
ERROR 1064 (42000):Máte chybu v syntaxi SQL; podívejte se do manuálu, který odpovídá verzi vašeho serveru MariaDB, kde najdete správnou syntaxi, která se má použít poblíž '2)' na řádku 1