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