2013-05-20 9 views
33

Ho query:Come selezionare i dati da 30 giorni?

SELECT name 
FROM (
SELECT name FROM 
Hist_answer 
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) 
UNION ALL 
SELECT name FROM 
Hist_internet 
WHERE id_city='34324' AND datetime >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH) 
) x 
GROUP BY name ORDER BY name 

Ma DATE_SUB è una funzione MySQL e ho bisogno di funzione per la MsSQL 2008

Dimmi per favore come per selezionare i dati provenienti da 30 giorni utilizzando MsSQL 2008?

PS: Tipo di dati di datetime è smalldatetime

risposta

43

Si deve usare DATEADD è SQL server quindi se provare questa semplice selezione vedrai l'effetto

Select DATEADD(Month, -1, getdate()) 

Risultato

2013-04-20 14:08:07.177 

nel tuo caso Prova questa ricerca

SELECT name 
FROM (
SELECT name FROM 
Hist_answer 
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE()) 
UNION ALL 
SELECT name FROM 
Hist_internet 
WHERE id_city='34324' AND datetime >= DATEADD(month,-1,GETDATE()) 
) x 
GROUP BY name ORDER BY name 
+0

ERRORE 'Sintassi non corretta vicino alla parola chiave 'CURRENT_DATE''. –

+1

Riprova, Query è cambiata, dall'ultima copia – Rab

17

Prova questo: Usando questo è possibile selezionare la data da ultimi 30 giorni,

SELECT DATEADD(DAY,-30,GETDATE()) 
+0

solo aggiornare il tuo DATE_SUB con DATEADD (DAY, -30, GETDATE()) – Anvesh

8

Per coloro che non hanno potuto ottenere DATEADD al lavoro, provare questo invece: (NOW() - INTERVALLO 1 mese)

+1

Nice. Questo ha funzionato bene! Grazie. –