2011-09-28 16 views
14

Sto cercando una decisione ottimale su come ottenere i valori della tabella in base alla data e all'ora ma entro un'ora UNICA.T-SQL (data): come ottenere il valore entro un'ora?

voglio dire qualcosa in questo modo (un pseudocodice):

SELECT value FROM Table WHERE date BETWEEN getdate() AND getdate()-ONE_HOUR 

Ai fini di questa domanda Table ha queste colonne:

  • value
  • date

Qualunque utile snippet è apprezzato :)

+0

Come regola generale, è meglio richiamare GetDate() una volta e salvare il valore in una variabile, quindi utilizzare la variabile a seconda delle necessità. Evita ogni sorta di fastidi intorno a mezzanotte. – HABO

risposta

22
SELECT Value 
FROM Table 
WHERE Date between dateadd(hour, -1, getdate()) and getdate() 

Descrizione della funzione DATEADD:

DATEADD (datepart , number , date) 

restituisce una data specificata con l'intervallo specificato numero (intero con segno) aggiunto ad una datepart specifico di tale data.

datepart  Abbreviations 
----------- ------------- 
year   yy, yyyy 
quarter  qq, q 
month  mm, m 
dayofyear dy, y 
day   dd, d 
week   wk, ww 
weekday  dw, w 
hour   hh 
minute  mi, n 
second  ss, s 
millisecond ms 
microsecond mcs 
nanosecond ns 

Maggiori informazioni:

+0

È interessante. Grazie. E se io uso const come -3 in questa funzione? Mi darà un risultato di valore di 3 ore? – user592704

+0

affermativo. Il valore numerico (param 2) viene aggiunto a (o con un valore negativo, sottratto) il valore della data (param 3). Se hai usato il giorno invece dell'ora, sottrarrai 1 (nel mio esempio) giorni invece di 1 ore, e un -3 farebbe sottrarre 3 giorni. –

2

Qualcosa di simile dovrebbe funzionare.

SELECT value 
FROM Table 
WHERE date >= dateadd(hour,-1,getdate()) 
    and date <= getdate() 
+0

Hai ragione. Ho cambiato la query ora. – Gabe

+0

Commento ritirato. Non sono sicuro che> = e <= o tra sia più efficiente però ... un giorno dovrò testare. –

+3

@TheEvilGreebo - Nessuna differenza come mai. Il predicato apparirà come '> =' e '<=' nel piano comunque. –

Problemi correlati