2017-01-09 68 views
0

我剛剛安裝下面僅檢索今天和明天項過濾器(其工作只是正常):取記錄今天和明天,無視週末

BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE()) 

但上週五我必須讓週一的項目,如好 - 我正在設置一個圍繞這個IF聲明,但我沒有任何運氣。下面是一個例子(不工作),但我難倒就如何正確地寫:

IF DATEPART(WEEKDAY, GETDATE()) IN (6) 
THEN BETWEEN { fn CURDATE() } AND DATEADD(day; 3; GETDATE()) 
ELSE BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE()) 

回答

4

如何:

where (datepart(weekday, getdate()) = 6 and 
     datecol between cast(getdate() as date) and cast(getdate() + 3 as date) 
    ) or 
     (datepart(weekday, getdate()) <> 6 and 
     datecol between cast(getdate()as date) and cast(getdate() + 1as date) 
    ) 

注:我沒有使用between用的風扇日期/日期時間。阿龍貝特朗有一個很好的blog發帖解釋這個。 BETWEEN是日期的安全,所以我離開了邏輯,你似乎已經指定它。

+0

由於沒有運氣運行上面,當我直接將其輸入到SQL我得到不正確的語法附近「投」,預計「AS」。也不能作爲MSSQL Studio 2k8中的過濾器,我得到函數參數計數錯誤。 – Senko