Okay, ich habe einen Bericht, der einen Vergleich zwischen dieser Woche und der letzten Woche macht, und unser Kunde hat bemerkt, dass seine Daten "funky" waren. Bei weiteren Untersuchungen stellten wir fest, dass es nach den ISO-Standards wochenlang nicht richtig lief. Ich habe dieses Skript als Testfall ausgeführt.
SET DATEFIRST 1
SELECT DATEPART(WEEK, '3/26/13')
, DATEPART(WEEK, '3/27/12')
, DATEPART(WEEK, '3/20/12')
, DATEPART(WEEK, '1/2/12')
SELECT DATEPART(ISO_WEEK, '3/26/13')
, DATEPART(ISO_WEEK, '3/27/12')
, DATEPART(ISO_WEEK, '3/20/12')
, DATEPART(ISO_WEEK, '1/2/12')
Beim Laufen habe ich diese Ergebnisse erhalten.
Ich fand das merkwürdig und machte einige weitere Grabungen. Dabei stellte ich fest, dass SQL Server den 1. Januar als erste Woche des Jahres zählt, während ISO den ersten Sonntag im Januar als erste Woche des Jahres zählt.
Die Frage ist dann zweifach. Frage 1 warum ist das so? Frage 2: Gibt es eine Möglichkeit, dies zu ändern, damit ich nicht meinen gesamten Code ändern muss, um ihn ISO_Week
überall zu verwenden ?