Du kan använda T-SQL-funktionen DATEPART()
för att returnera veckonummer från ett datum i SQL Server.
Med "veckonummer" menar jag veckans nummer inom året från det angivna datumet.
Exempel
För att returnera veckonummer, använd week
som det första argumentet för DATEPART()
funktion.
DECLARE @date date = '2020-07-20';
SELECT DATEPART(week, @date);
Resultat:
30
Alternativa argument
Alternativt kan du använda wk
eller ww
som det första argumentet för att göra samma sak.
DECLARE @date date = '2024-07-20';
SELECT
DATEPART(week, @date) AS week,
DATEPART(wk, @date) AS wk,
DATEPART(ww, @date) AS ww;
Resultat:
+--------+------+------+ | week | wk | ww | |--------+------+------| | 29 | 29 | 29 | +--------+------+------+
Du kommer att märka att veckonumret i dessa resultat skiljer sig från veckonumret i föregående exempel, även om båda exemplen använde 20 juli som datum. Detta är att vänta.
De två exemplen använder ett annat årtal. Veckans antal kan påverkas av året. Så med andra ord, bara för att den 20 juli är den 30:e veckan på ett år, betyder det inte att det blir den 30:e veckan varje år. Bara något att tänka på.
ISO-veckonummer
Du kan också returnera ISO-veckans nummer från ett datum genom att använda iso_week
argument. ISO-veckor börjar på måndagar och den första veckan på ett år innehåller den 4 januari samma år.
Därför är det möjligt att datum i början av januari är en del av den 52:a eller 53:e veckan föregående år, och att datum i slutet av december är en del av den första veckan nästa år.