Możesz użyć funkcji T-SQL DATEPART()
aby zwrócić numer tygodnia z daty w SQL Server.
Przez „numer tygodnia” rozumiem numer tygodnia w roku podanej daty.
Przykład
Aby zwrócić numer tygodnia, użyj week
jako pierwszy argument funkcji DATEPART()
funkcja.
DECLARE @date date = '2020-07-20';
SELECT DATEPART(week, @date);
Wynik:
30
Alternatywne argumenty
Alternatywnie możesz użyć wk
lub ww
jako pierwszy argument, który robi to samo.
DECLARE @date date = '2024-07-20';
SELECT
DATEPART(week, @date) AS week,
DATEPART(wk, @date) AS wk,
DATEPART(ww, @date) AS ww;
Wynik:
+--------+------+------+ | week | wk | ww | |--------+------+------| | 29 | 29 | 29 | +--------+------+------+
Zauważysz, że numer tygodnia w tych wynikach różni się od numeru tygodnia w poprzednim przykładzie, mimo że w obu przykładach użyto 20 lipca jako daty. Tego można było się spodziewać.
W dwóch przykładach użyto innego roku. Na numer tygodnia może mieć wpływ rok. Innymi słowy, tylko dlatego, że 20 lipca jest 30 tygodniem w roku, nie oznacza to, że będzie to 30 tydzień każdego roku. Po prostu coś, o czym należy pamiętać.
Numer tygodnia ISO
Możesz również zwrócić numer tygodnia ISO z daty, używając iso_week
argument. Tygodnie ISO zaczynają się w poniedziałki, a pierwszy tydzień roku zawiera 4 stycznia tego roku.
Dlatego możliwe jest, że daty na początku stycznia będą częścią 52. lub 53. tygodnia poprzedniego roku, a daty pod koniec grudnia będą częścią pierwszego tygodnia następnego roku.