D'accord, j'ai un rapport qui fait une comparaison cette semaine par rapport à la semaine dernière et notre client a remarqué que leurs données étaient "géniales". Après un examen plus approfondi, nous avons constaté qu'il ne fonctionnait pas correctement conformément aux normes ISO. J'ai exécuté ce script en tant que test.
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')
Quand couru j'ai eu ces résultats.
Je pensais que c'était étrange et j'ai donc creusé un peu plus et j'ai constaté que SQL Server comptait le 1er janvier comme première semaine de l'année, alors qu'ISO comptait le premier dimanche de janvier comme première semaine de l'année.
La question finit alors par être double. Question 1 pourquoi est-ce? Question 2: Y a-t-il un moyen de changer cela afin que je ne doive pas modifier tout mon code pour l'utiliser ISO_Week
partout?