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

YEARWEEK() Przykłady – MySQL

W MySQL funkcja YEARWEEK() funkcja zwraca rok i tydzień dla podanej daty. Podajesz datę jako argument, a funkcja zwróci odpowiedni wynik.

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

Możesz użyć jednej z dwóch następujących form:

YEARWEEK(date)
YEARWEEK(date,mode)

Gdzie:

  • date to data, z której chcesz zwrócić numer roku i 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. W poniższej tabeli znajdują się możliwe wartości trybów.

Jeśli nie określono trybu, tryb to 0 .

Przykład 1 – Podstawowe użycie

Oto przykład do zademonstrowania.

SELECT YEARWEEK('2021-01-25') As 'Result';

Wynik:

+--------+
| Result |
+--------+
| 202104 |
+--------+

Oto przykład z inną datą.

SELECT YEARWEEK('1999-12-25') As 'Result';

Wynik:

+--------+
| Result |
+--------+
| 199951 |
+--------+

Przykład 2 – Określ tryb

Jeśli nie określisz drugiego argumentu, YEARWEEK() funkcja używa 0 jako tryb.

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

SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';

Wynik:

+--------+
| Mode 7 |
+--------+
| 201946 |
+--------+

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

Są to te same wartości, których można użyć z WEEK() funkcja.

Jedną z różnic między tymi dwiema funkcjami jest to, że WEEK() funkcja wywodzi swój domyślny tryb z default_week_format zmienna systemowa (domyślna wartość tej zmiennej to 0 ). YEARWEEK() z drugiej strony ignoruje to ustawienie i używa 0 jako jego wartość domyślną (niezależnie od default_week_format ustawienie).

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

Wynik:

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

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

Wynik:

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

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

Wynik:

+--------+--------+--------+--------+--------+--------+--------+--------+
| 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego używanie przygotowanej instrukcji mysql jest bezpieczniejsze niż używanie typowych funkcji ucieczki?

  2. Zamiana wartości kolumn w MySQL

  3. Wyszukiwanie MySQL na liście przecinków

  4. Jak naprawić serializowany ciąg, który został uszkodzony przez nieprawidłową długość licznika bajtów?

  5. Najlepszy sposób na sprawdzenie, czy mysql_query zwrócił jakieś wyniki?