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

Příklady WEEK() – MySQL

V MySQL můžete použít WEEK() funkce pro získání čísla týdne pro dané datum. „Číslem týdne“ myslím týden v roce.

Chcete-li funkci použít, jednoduše zadejte datum jako argument a vrátí se číslo týdne.

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

Syntaxe vypadá takto:

WEEK(date[,mode])

Kde:

  • date je datum, ze kterého chcete vrátit číslo 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.

Příklad 1 – Základní použití

Zde je příklad k demonstraci.

SELECT WEEK('2021-01-25') As 'Week Number';

Výsledek:

+-------------+
| Week Number |
+-------------+
|           4 |
+-------------+

Zde je příklad s datem blízko konce roku.

SELECT WEEK('2021-12-25') As 'Week Number';

Výsledek:

+-------------+
| Week Number |
+-------------+
|          51 |
+-------------+

Příklad 2 – Určení režimu

Pokud neurčíte druhý argument, WEEK() funkce používá režim určený default_week_format systémová proměnná. Výchozí hodnota této proměnné je 0 .

Máte však také možnost zadat druhý argument, který určí, který režim se má použít. Příklad:

SELECT WEEK('2019-10-17', 7) AS 'Mode 7';

Výsledek:

+--------+
| Mode 7 |
+--------+
|     41 |
+--------+

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

Pro hodnoty režimu, kde týden 1 je první týden „se 4 nebo více dny v tomto roce“, jsou týdny číslovány podle ISO 8601:1988:

  • Pokud má týden obsahující 1. leden 4 nebo více dní v novém roce, jedná se o týden 1.
  • Jinak je to poslední týden předchozího roku a další týden je týden 1.

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 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Výsledek:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      0 |      1 |     52 |      1 |      1 |      0 |      1 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 2

SET @date = '2019-01-06';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Výsledek:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      1 |      1 |      1 |      2 |      0 |      2 |     53 |
+--------+--------+--------+--------+--------+--------+--------+--------+

Datum 3

SET @date = '2019-01-07';
SELECT 
  WEEK(@date, 0) AS 'Mode 0',
  WEEK(@date, 1) AS 'Mode 1',
  WEEK(@date, 2) AS 'Mode 2',
  WEEK(@date, 3) AS 'Mode 3',
  WEEK(@date, 4) AS 'Mode 4',
  WEEK(@date, 5) AS 'Mode 5',
  WEEK(@date, 6) AS 'Mode 6',
  WEEK(@date, 7) AS 'Mode 7';

Výsledek:

+--------+--------+--------+--------+--------+--------+--------+--------+
| Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 |
+--------+--------+--------+--------+--------+--------+--------+--------+
|      1 |      2 |      1 |      2 |      2 |      1 |      2 |      1 |
+--------+--------+--------+--------+--------+--------+--------+--------+

  1. Jak mohu vybrat první den v měsíci v SQL?

  2. Chyba přihlášení k serveru Microsoft SQL Server:18456

  3. Generování časových řad mezi dvěma daty v PostgreSQL

  4. Jak aktuální_datum funguje v PostgreSQL