Verwenden DATEADD
2 Tage nach dem aktuellen Datum zu subtrahieren und prüfen, ob Erstellungs-Datum zwischen diesem und dem heutigen Datum ist:
SELECT COUNT (*)
FROM [MyDB].[dbo].[MyTable]
WHERE City = 'Paris' AND CreateDate
BETWEEN DATEADD(DAY, -2, GETUTCDATE()) AND GETUTCDATE()
Wenn Sie ganze Tage wollen (dh keine Zeitkomponente diese dann verwenden):
SELECT COUNT (*)
FROM [MyDB].[dbo].[MyTable]
WHERE City = 'Paris' AND CreateDate
BETWEEN dateadd(dd,0, datediff(dd,0,DATEADD(day, -2, GETUTCDATE())))
AND DATEADD(s, -1, dateadd(dd,0, dateadd(dd,0, datediff(dd,0,DATEADD(day, 1, GETUTCDATE()))))
Wenn das aktuelle Datum 09-Dec-2016 ist dann die where-Klausel der zweiten Abfrage erzeugen würde:
CreateDate BETWEEN 07-Dec-2016 00:00:00 and 09-Dec-2016 23:59:59
Hinweis: Verwenden Sie GETDATE()
, wenn Sie das Datum Zeiten in Ortszeit gespeichert sind oder GETUTCDATE()
wenn in UTC gespeichert.
Mögliche Duplikat (http://stackoverflow.com/questions/6782999/find-records-from-previous-x-days) – 3N1GM4