2016-12-14 142 views
1

運行到一個小問題。 我有一個基於日期的scrpit。我需要的是檢索14天前的數據,不包括它運行的日期。 例子;日期運行12/15/2016應檢索數據之間12/1/1/2016 - 12/14/2016。 我遇到的問題是它的運行日期結束。見下面我設定的標準。SQL Server日期設置

where a.UF_1 <> '' and (DATEDIFF(dd, a.TRANSACTION_DATE, getdate()) <14) 

任何幫助表示讚賞。 謝謝。

+0

'''getdate()'''返回當前時間戳記,因此任何在TRANSACTION_DATE之間的記錄都會包含在結果中。因此,而不是getdate(),如果你使用'''convert(varchar,getdate(),101)''',那就應該有效。 – Anand

回答

0

你的意思是這樣的:

where a.UF_1 <> '' and cast(a.TRANSACTION_DATE as date) between cast(getdate()-14 as date) and cast(getdate()-1 as date)

我假設a.UF_1a.TRANSACTION_DATE都不能爲空。否則處理這個。

+0

是的,這可以解決問題。謝謝! – Messi

4
select * from yourTable 
where datecolumn < getdate() 
    and datecolumn >=dateadd(dd,-14,getdate()) 

OR。 。 。 。

declare @someDateVariable datetime - '12/15/2016' 
select * 
from yourTable 
where cast(datecolumn as date) < cast(@someDateVariable as date) 
    and datecolumn >= dateadd(dd,-14,@someDateVariable) 
+1

編輯問題並在問題發佈後的120秒內發佈兩個答案。我想要一些你在做的事情。 – SqlZim

+0

感謝您的回覆。它仍在提高運行日期。 – Messi

+0

@Messi,因爲您需要將GETDATE()作爲DATE,因爲它是DATETIME格式。 – scsimon