2015-08-06 31 views
5

Ho uno script SQL che seleziona tutto dal giorno corrente.Ottieni la data di 3 giorni fa

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

Data è il tipo di DateTime.

Come ottenere tutto negli ultimi 3 giorni? Suppongo di aver bisogno di sottrarre 3 giorni dal risultato della funzione SYSDATETIME(), ma come?

+1

DATEADD (giorno, -3, convertire (data, SYSDATETIME())) – mxix

risposta

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

@vico hi , hai trovato la risposta? – Backs

1

Usa BETWEEN

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

ottenuto errore "Operando tipo clash: datetime2 è incompatibile con int" – vico

+0

Vedere la risposta qui per quanto riguarda l'uso di BETWEEN e Data: http://stackoverflow.com/a/25564544/4654008 – Thomas

0

Utilizzando TRA è bello. Preferisco anche la funzione DATEADD. Ma sii consapevole del fatto che la funzione SYSDATETIME (o io vorrei GETDATE()) include anche il tempo che significherebbe che gli eventi prima dell'ora corrente ma entro il periodo di tre giorni potrebbero non essere inclusi. Potrebbe essere necessario convertire entrambi i lati in una data anziché in data/ora.

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

Per uso mysql questo:

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

sql-server non è mysql – Backs

1

Uso GETDATE(): Sì, si arriva data dal sistema!

Restituisce il timestamp del sistema del database corrente come un valore data/ora senza lo sfasamento del fuso orario del database. Questo valore è derivato dal sistema operativo del computer su cui è in esecuzione l'istanza di SQL Server .

Query:

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

Più Riferimento:

GETDATE Detailed Documentation

Problemi correlati