V MySQL, YEARWEEK()
funkce vrací rok a týden pro dané datum. Zadáte datum jako argument a funkce odpovídajícím způsobem vrátí výsledek.
Máte také možnost určit, zda má týden začínat neděli nebo pondělí a zda má být týden v rozsahu 0 až 53 nebo 1 až 53.
Syntaxe
Můžete použít kterýkoli z následujících dvou formulářů:
YEARWEEK(date) YEARWEEK(date,mode)
Kde:
date
je datum, ze kterého chcete vrátit číslo roku a týdne.mode
je číslo, které určuje, zda má týden začínat v neděli nebo pondělí a zda má být týden v rozsahu 0 až 53 nebo 1 až 53. Možné hodnoty režimu naleznete v tabulce níže.
Pokud není zadán žádný režim, je režim 0
.
Příklad 1 – Základní použití
Zde je příklad k demonstraci.
SELECT YEARWEEK('2021-01-25') As 'Result';
Výsledek:
+--------+ | Result | +--------+ | 202104 | +--------+
Zde je příklad s jiným datem.
SELECT YEARWEEK('1999-12-25') As 'Result';
Výsledek:
+--------+ | Result | +--------+ | 199951 | +--------+
Příklad 2 – Určení režimu
Pokud neurčíte druhý argument, YEARWEEK()
funkce používá 0
jako režim.
Máte však také možnost zadat druhý argument, který určí, který režim se má použít. Příklad:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Výsledek:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
Možné hodnoty režimu jsou následující.
Režim | První den týdne | Rozsah | Týden 1 je prvním týdnem… |
---|---|---|---|
0 | Neděle | 0–53 | s nedělí v tomto roce |
1 | pondělí | 0–53 | se 4 nebo více dny v tomto roce |
2 | Neděle | 1-53 | s nedělí v tomto roce |
3 | pondělí | 1-53 | se 4 nebo více dny v tomto roce |
4 | Neděle | 0–53 | se 4 nebo více dny v tomto roce |
5 | pondělí | 0–53 | s pondělím v tomto roce |
6 | Neděle | 1-53 | se 4 nebo více dny v tomto roce |
7 | pondělí | 1-53 | s pondělím v tomto roce |
Toto jsou stejné hodnoty, které lze použít s WEEK()
funkce.
Jeden rozdíl mezi těmito dvěma funkcemi je v tom, že WEEK()
funkce odvozuje svůj výchozí režim z default_week_format
systémová proměnná (výchozí hodnota této proměnné je 0
). YEARWEEK()
na druhou stranu toto nastavení ignoruje a použije 0
jako výchozí hodnotu (bez ohledu na default_week_format
nastavení).
Příklad 3 – Porovnání režimů
Zde je rychlé srovnání toho, jak můžete získat různé výsledky v závislosti na používaném režimu.
Následující tři příklady používají stejný kód, ale se třemi různými daty. Tato data jdou po sobě – nastávají 5., 6. a 7. ledna. Jak vidíte, výsledky se mohou značně lišit v závislosti na přesném datu a použitém režimu.
Datum 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Výsledek:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Výsledek:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Datum 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Výsledek:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+