Je voudrais calculer la différence en semaines entre deux dates, où deux dates sont considérées comme faisant partie de la même semaine si leur dimanche précédent est le même. Idéalement, je voudrais le faire en utilisant DATEDIFF
, au lieu d'apprendre un idiome élaboré pour calculer la valeur. Mais je ne peux pas dire comment cela fonctionne quand des semaines sont impliquées. La requête suivante renvoie 1 et 2. Cela peut sembler logique si votre semaine calendaire commence par un dimanche, c'est-à-dire si vous exécutez SET DATEFIRST 7
au préalable ou si @@DATEFIRST
est 7 par défaut.Comment DATEDIFF calcule-t-il les différences de semaine dans SQL Server 2005?
SET DATEFIRST 7;
-- SET DATEFIRST 1;
DECLARE
@d1 DATETIME,
@d2a DATETIME,
@d2b DATETIME
;
SELECT
@d1 = '2010-04-05', -- Monday
@d2a = '2010-04-16', -- Following Friday
@d2b = '2010-04-18' -- the Sunday following
;
SELECT
DATEDIFF(week, @d1, @d2a) AS weekdiff_a -- returns 1
,DATEDIFF(week, @d1, @d2b) AS weekdiff_b -- returns 2
;
J'attend des résultats différents si SET DATEFIRST 1
est exécuté au lieu de SET DATEFIRST 7
. Mais les valeurs de retour sont les mêmes, peu importe!
Que se passe-t-il ici? Que dois-je faire pour obtenir les bonnes différences de semaine?
Merci de me pointer dans la bonne direction. Avec votre aide, j'ai été capable de trouver une solution défendable à mon problème. – eksortso