2015-08-06 9 views
5

Ich habe SQL-Skript, das alles vom aktuellen Tag auswählt.Get date von vor 3 Tagen

SELECT [ClientID] from [logs] where Date > CONVERT (date, SYSDATETIME()) 

Datum ist Typ von DateTime.

Wie erhalten Sie alles innerhalb der letzten 3 Tage? Ich nehme an, ich muss 3 Tage von der Funktion SYSDATETIME() abziehen, aber wie?

+1

DATEADD (TAG, -3, CONVERT (Datum, SYSDATETIME())) – mxix

Antwort

6
SELECT [ClientID] from [logs] where Date > DATEADD(day, -3, CONVERT (date, SYSDATETIME())) 
+0

@vico hallo Hast du eine Antwort gefunden? – Backs

1

Verwenden BETWEEN

SELECT ClientID 
FROM logs 
WHERE Date BETWEEN SYSDATETIME() AND SYSDATETIME() - 3 
+0

Fehler erhalten "Operand Typ Konflikt: DateTime2 ist nicht kompatibel mit Int" – vico

+0

Siehe die Antwort hier bezüglich der Verwendung von BETWEEN und Datum: http://StackOverflow.com/A/25564544/4654008 – Thomas

0

zwischen der Verwendung ist schön. Ich bevorzuge auch die DATEADD-Funktion. Aber beachten Sie, dass die SYSDATETIME-Funktion (oder ich würde GETDATE()) auch die Zeit enthält, die bedeutet, dass Ereignisse vor der aktuellen Zeit, aber innerhalb der Drei-Tage-Periode nicht enthalten sein können. Sie müssen möglicherweise beide Seiten in ein Datum anstelle von Datetime konvertieren.

0
SELECT [ClientID] from [logs] where Date > DATEADD(day, -3, SYSDATETIME()) 
2

für MySQL verwenden diese:

SELECT DATE_ADD(CURRENT_DATE, INTERVAL - 3 DAY); 
+2

SQL-Server ist nicht mysql – Backs

1

Verwendung GETDATE(): Ja, es wird Datum aus dem System!

Gibt den aktuellen Zeitstempel des Datenbanksystems als Datetime-Wert ohne den Datenbank-Zeitzonen-Offset zurück. Dieser Wert ist , abgeleitet von dem Betriebssystem des Computers, auf dem die Instanz von SQL Server ausgeführt wird.

Abfrage:

SELECT [ClientID] from [logs] where (Date > GETDATE() - 3) 

Weitere Referenz:

GETDATE Detailed Documentation