Mysql
 sql >> Baza danych >  >> RDS >> Mysql

WEEK() Przykłady – MySQL

W MySQL możesz użyć WEEK() funkcja, aby uzyskać numer tygodnia dla podanej daty. Przez „numer tygodnia” rozumiem tydzień roku.

Aby użyć tej funkcji, po prostu podaj datę jako argument, a numer tygodnia zostanie zwrócony.

Masz również możliwość określenia, czy tydzień ma się zaczynać w niedzielę czy poniedziałek, oraz czy tydzień powinien mieścić się w zakresie od 0 do 53 lub od 1 do 53.

Składnia

Składnia wygląda tak:

WEEK(date[,mode])

Gdzie:

  • date to data, z której chcesz zwrócić numer tygodnia.
  • mode to liczba określająca, czy tydzień powinien rozpoczynać się w niedzielę czy poniedziałek i czy tydzień powinien mieścić się w zakresie od 0 do 53 lub od 1 do 53. Zobacz tabelę poniżej, aby poznać możliwe wartości trybów.

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

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

Wynik:

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

Oto przykład z datą pod koniec roku.

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

Wynik:

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

Przykład 2 – Określ tryb

Jeśli nie określisz drugiego argumentu, WEEK() funkcja używa trybu określonego przez default_week_format zmienna systemowa. Domyślna wartość tej zmiennej to 0 .

Masz jednak również możliwość podania drugiego argumentu, aby określić, którego trybu użyć. Przykład:

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

Wynik:

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

Możliwe wartości trybu są następujące.

Tryb Pierwszy dzień tygodnia Zakres Tydzień 1 to pierwszy tydzień…
0 Niedziela 0-53 z niedzielą w tym roku
1 Poniedziałek 0-53 z co najmniej 4 dniami w tym roku
2 Niedziela 1-53 z niedzielą w tym roku
3 Poniedziałek 1-53 z co najmniej 4 dniami w tym roku
4 Niedziela 0-53 z co najmniej 4 dniami w tym roku
5 Poniedziałek 0-53 z poniedziałkiem w tym roku
6 Niedziela 1-53 z co najmniej 4 dniami w tym roku
7 Poniedziałek 1-53 z poniedziałkiem w tym roku

W przypadku wartości trybów, w których tydzień 1 jest pierwszym tygodniem „z co najmniej 4 dniami w tym roku”, tygodnie są ponumerowane zgodnie z ISO 8601:1988:

  • Jeśli tydzień zawierający 1 stycznia ma 4 lub więcej dni w nowym roku, jest to tydzień 1.
  • W przeciwnym razie jest to ostatni tydzień poprzedniego roku, a następny tydzień to tydzień 1.

Przykład 3 – Porównanie trybów

Oto szybkie porównanie, w jaki sposób można uzyskać różne wyniki w zależności od używanego trybu.

Poniższe trzy przykłady używają tego samego kodu, ale z trzema różnymi datami. Daty te są następujące po sobie – przypadają 5, 6 i 7 stycznia. Jak widać, wyniki mogą się różnić w zależności od dokładnej daty i używanego trybu.

Data 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';

Wynik:

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

Data 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';

Wynik:

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

Data 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';

Wynik:

+--------+--------+--------+--------+--------+--------+--------+--------+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obciąć wszystkie tabele w bazie danych MySQL w jednym poleceniu?

  2. Python:użyć mysqldb do zaimportowania tabeli MySQL jako słownika?

  3. Maksymalna liczba rekordów w tabeli bazy danych MySQL

  4. Jak zmienić nazwę przesłanego pliku przed zapisaniem go w katalogu?

  5. Co nowego w ProxySQL 2.0