Als u het ISO-weeknummer uit een datum in SQL Server moet halen, kunt u de iso_week
gebruiken argument bij het aanroepen van de DATEPART()
functie. U kunt ook de isowk
. gebruiken of isoww
argumenten om hetzelfde te doen.
Met "ISO-week" verwijs ik naar de ISO 8601-norm voor datum en tijd.
ISO-weken beginnen op maandag en de eerste week van een jaar bevat 4 januari van dat jaar. Daarom is het mogelijk dat data van begin januari deel uitmaken van de 52e of 53e week van het voorgaande jaar en data van eind december tot de eerste week van het volgende jaar.
Dit betekent dat wanneer u het weeknummer uit een datum haalt, u verschillende resultaten kunt krijgen, afhankelijk van of u de Gregoriaanse kalender of de ISO 8601 datum- en tijdstandaard gebruikt.
Voorbeeld
DECLARE @date date = '2021-01-01';
SELECT DATEPART(iso_week, @date);
Resultaat:
53
In dit geval is de datum 1 januari 2021, maar in ISO-termen is dit de 53e week van 2020.
Vergelijking met Gregoriaans
Hier is nog een voorbeeld om het te vergelijken met de Gregoriaanse week.
DECLARE @date date = '2021-01-01';
SELECT
DATEPART(week, @date) AS week,
DATEPART(iso_week, @date) AS iso_week;
Resultaat:
+--------+------------+ | week | iso_week | |--------+------------| | 1 | 53 | +--------+------------+
We kunnen dus zien dat dezelfde datum een ander weeknummer kan hebben, afhankelijk van of we de Gregoriaanse kalender of de ISO-standaard gebruiken.
We kunnen hetzelfde doen met een datum tegen het einde van het voorgaande jaar.
DECLARE @date date = '2020-12-27';
SELECT
DATEPART(week, @date) AS week,
DATEPART(iso_week, @date) AS iso_week;
Resultaat:
+--------+------------+ | week | iso_week | |--------+------------| | 53 | 52 | +--------+------------+
Alternatieve argumenten
Zoals vermeld, kan als alternatief de isowk
. worden gebruikt of isoww
om het ISO-weeknummer te retourneren.
DECLARE @date date = '2021-01-01';
SELECT
DATEPART(iso_week, @date) AS iso_week,
DATEPART(isowk, @date) AS isowk,
DATEPART(isoww, @date) AS isoww;
Resultaat:
+------------+---------+---------+ | iso_week | isowk | isoww | |------------+---------+---------| | 53 | 53 | 53 | +------------+---------+---------+