ISO Week jest powszechnie używanym standardem pokazującym kolejny numer tygodnia w danym roku w formie liczbowej. Najważniejsze jego cechy w odróżnieniu od innych formatów, to:
- poniedziałek uwzględniany jest jako pierwszy dzień tygodnia
- pierwszy tydzień danego roku zawiera pierwszy dzień roboczy tego roku.
W wersjach SQL Server 2008 R2 i wyższych problem jest rozwiązany poprzez szersze zastosowanie funkcji DATEPART(). W starszych wersjach SQL Server problem ten możemy rozwiązać poprzez napisanie prostej funkcji. Przykład poniżej:
CREATE function TK_ISOWEEK(@date datetime) RETURNS INT as BEGIN RETURN (datepart(DY, datediff(d, 0, @date) / 7 * 7 + 3)+6) / 7 END
Obie funkcje możemy wykorzystać w poniżej opisany sposób:
select dbo.TK_ISOWEEK('2016-01-04') -- wersje sql server starsze niż 2008R2 ,datepart(iso_week, '2016-01-04') -- wersje sql server 2008R2 oraz nowsze. ;