sql >> Databáze >  >> RDS >> Mysql

Příklady YEARWEEK() – MySQL

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 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. mysql_num_rows() očekává, že parametr 1 bude zdroj, zadaný boolean

  2. Komprese textu v PostgreSQL

  3. Vygenerujte třídu z databázové tabulky

  4. Oprava Msg 8117 „Datový typ operandu varchar je neplatný pro operátor součtu“ v SQL Server