2011-09-28 15 views
14

Tablo değerlerini tarihlerine ve saatlerine göre alma konusunda en uygun kararı arıyorum.T-SQL (tarih) - bir saat içinde değer nasıl alınır?

Ben bu şekilde bir anlam ifade (bir yalancı kod):

  • value
  • date

: Bu sorunun Table amacıyla

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

bu sütunları vardır Herhangi bir yararlı snippet takdir edilir :)

+0

, bir zamanlar) GetDate (çağırmak ve bir değişkendeki değeri kaydedin, daha sonra gerektiği gibi değişken kullanmak en iyisidir. Gece yarısı etrafında her türlü nastiyi önler. – HABO

cevap

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

Açıklama:

DATEADD (datepart , number , date) 

belirtilen sayıda aralığı (tamsayı) ile belirtilen bir tarihi döndürür, bu tarihten belirli bir DATEPART ilave edildi.

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 

fazla bilgi: Kural olarak

+0

Bu ilginç. Teşekkürler. Peki ya bu işlevde -3 gibi const kullanırsam? O zaman bana 3 saatlik bir değer sonucu verir mi? – user592704

+0

Olumlu. Sayı değeri (param 2), tarih değerine (param 3) eklenir (veya negatif bir değere çıkarılır). Eğer saat yerine gün kullandıysanız, 1 saat yerine 1 (örnekte) çıkarırdım ve -3 değeri 3 gün çıkarırdı. –

2

Böyle bir şey işe yaramalıdır. DATEADD fonksiyonunun

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

Haklısınız. Sorguyu şimdi değiştirdim. – Gabe

+0

Yorum yeniden denendi. Eminim ki: = ve <= veya daha verimli olsa da ... bir gün test etmek zorundayım. –

+3

@TheEvilGreebo - Farkı ne olursa olsun. Yükleme, planda yine de '> = 've' <= 'şeklinde görünecektir. –

İlgili konular