我試圖獲取僅在查詢運行當天的05:00:00之前在系統中存在的記錄列表。我有這個查詢在基本測試中工作,但我想看看是否有比執行SQL連接更好的選項。SQL Server在定義的時間之前獲取記錄
select *
from Payment
where createTimestamp <= CONVERT(VARCHAR(10), Getdate(), 120) +' '+'17:00:00';
這個查詢的SQL Server上使用2008年
我試圖獲取僅在查詢運行當天的05:00:00之前在系統中存在的記錄列表。我有這個查詢在基本測試中工作,但我想看看是否有比執行SQL連接更好的選項。SQL Server在定義的時間之前獲取記錄
select *
from Payment
where createTimestamp <= CONVERT(VARCHAR(10), Getdate(), 120) +' '+'17:00:00';
這個查詢的SQL Server上使用2008年
Select ...
From Payment
Where CreateTimeStamp <= DateAdd(hh, 17, DateDiff(d, 0, CURRENT_TIMESTAMP))
另一種選擇給您使用的是SQL Server 2008中
Select ...
From Payment
Where CreateTimeStamp <= DateAdd(hh, 17, Cast(Cast(CURRENT_TIMESTAMP As Date) As DateTime))
我嘗試了2008年的選擇,它的工作。謝謝。 – 2011-03-29 19:52:14
這將檢索與之間的createTimestamp
所有記錄上午12點和下午5點。
select *
from Payment
where createTimestamp
between dateadd(dd, datediff(dd, 0, getdate()), 0)
and dateadd(hh, 17, dateadd(dd, datediff(dd, 0, getdate()), 0))
這將檢索今天昨天下午5點下午5點之間的createTimestamp
的所有記錄。
select *
from Payment
where createTimestamp
between dateadd(hh, -7, dateadd(dd, datediff(dd, 0, getdate()), 0))
and dateadd(hh, 17, dateadd(dd, datediff(dd, 0, getdate()), 0))
爲了更有趣的SQL日期檢查我的回答GETDATE last month。
當天下午5點之前......你是否也只希望自前一天下午5點開始錄音? – 2011-03-29 19:21:36
「僅在當天下午5點之前查詢運行」是指「在給定日期的下午5點之前的任何日期」(包括前幾天的項目)還是意味着「在當天但下午5點之前」? – Thomas 2011-03-29 19:32:53
@ Neil:這是針對每個星期三運行的計劃任務。所以我們只需要支付「待付款」狀態下的所有付款。所以沒有要求查看前一天的時間。我必須尋找「待付」狀態。 @Thomas:前者。 – 2011-03-29 19:49:52