2017-07-03 4 views
0

Je suis en train de faire un compte sur toutes les données de la semaine dernière (lundi - dimanche). Mais il semble que ce soit en ignorant dimanche pour une raison quelconque et de cette façon je n'obtiens pas le compte correct:Nombre de données de la semaine dernière en SQL Server

SET DATEFIRST 1 
    Select * 
    FROM Products a 
    inner join Locations b 
    on a.Location = b.LocID 
    where b.LocID = 12 AND 
    a.Created >= DATEADD(week, DATEDIFF(week,0,GETDATE())-1,-1) 
    AND a.Created < DATEADD(week, DATEDIFF(week,0,GETDATE()),-1) 
+1

SET DATEFIRST 1 Sélectionner DATEADD (semaine, DATEDIFF (semaine 0, GETDATE()) - 1, -1) , DATEADD (semaine, DATEDIFF (semaine 0, GETDATE()), - 1) Quand vous courez cela, vous devriez voir pourquoi vous n'obtenez pas dimanche. – SteveB

Répondre

0

Essayez plutôt d'utiliser le jour de la semaine. Je pense que vous pourriez avoir du mal à l'utilisation semaine vous avez réellement besoin de calculer:

où a.Created> = (la semaine dernière lundi) et a.Created < (cette semaine lundi)

ici est la requête en utilisant DW:

SET DATEFIRST 1 
Select * 
FROM Products a 
inner join Locations b 
on a.Location = b.LocID 
where b.LocID = 12 AND 
a.Created >= DATEADD(day, -DATEPART(dw, GETDATE())-6, CONVERT(DATE,GETDATE())) 
AND a.Created < DATEADD(day, -DATEPART(dw, GETDATE())+1, CONVERT(DATE,GETDATE())) 
+0

Merci mon pote! fonctionne parfaitement! – MishMish