2011-09-28 105 views
14

我正在尋找如何根據日期和時間獲取表格值的最佳決策,但在一個小時之內。T-SQL(日期) - 如何在一小時內獲得價值?

我意味着什麼這樣(僞代碼):

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

對於這個問題Table的目的有以下欄目:

  • value
  • date

任何有用的代碼片段表示讚賞:)

+0

作爲一項規則,最好是調用GETDATE()一次,並保存在一個變量中的值,然後使用該變量根據需要。它避免了午夜左右的各種瑕疵。 – HABO

回答

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

DATEADD功能的描述:

DATEADD (datepart , number , date) 

返回指定日期與指定數目的時間間隔(帶符號的整數)加入到該日期的指定datepart。

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 

的更多信息:

+0

這很有趣。謝謝。如果我在這個函數中使用-3這樣的const呢?它會給我過去3小時的價值結果嗎? – user592704

+0

肯定。數值(參數2)被添加到日期值(參數3)(或帶有負值,減去)。如果你使用一天而不是一小時,它會減去1(在我的例子中)而不是1小時,而-3會使它減去3天。 –

2

這樣的事情應該工作。

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

你說得對。我已經更改了現在的查詢。 – Gabe

+0

評論回溯。我不確定是否> =和<=或之間更有效,但有一天我必須測試。 –

+3

@ TheEvilGreebo - 沒什麼差別。無論如何,謂詞將在計劃中顯示爲「> =」和「<=」。 –