2012-09-27 56 views
0

我想寫一個SQL將拉起所有日期範圍或過去90天。除了下面的代碼,代碼描述了要查看的日期以外,所有內容都可以正常工作。WHERE CASE與DATEADD

WHERE 
    CASE @All_90 
     WHEN @All_90 = 1 
     THEN td.DateSeen NOT BETWEEN DATEADD(day,-90,GETDATE()) and GETDATE() 

@All_90是可變的,以確定是否該代碼將着眼於所有日期或只是那些不前90天。

+1

'CASE'在SQL Server可以返回**實際值** - 沒有表情。那麼你想在這裏做什麼? –

+0

這是否意味着,當@ All_90 = 1時記得過去90年的記錄?否則所有記錄都記錄在案? – shahkalpesh

回答

1

我認爲這會爲你做它:

WHERE 
    (@All_90 = 1 AND td.DateSeen NOT BETWEEN DATEADD(day,-90,GETDATE()) and GETDATE()) 
    OR (@All_90 = 0 AND td.DateSeen BETWEEN DATEADD(day,-90,GETDATE()) and GETDATE()) 
+0

非常感謝您的工作。 –