2016-08-05 69 views
0

下面是我試圖做的工作的部分代碼...如果今天是星期一,基本上它會給我上一個星期一的日期。如果今天不是星期一,那麼它會給我本週一的日期。案例中的多個布爾表達式當語句

WHERE 
CASE WHEN 
DATEPART(dw,GETDATE()) = '1' 
THEN 
DateColumn >= DATEADD(wk,DATEDIFF(wk,0,GETDATE()) - 1,0) 
ELSE 
DateColumn >= DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 
END 

但是,當我運行代碼時,它說在'>'附近有一個不正確的語法。我不確定它是否不喜歡使用多個布爾表達式,或者該語法是否真的有問題。

回答

1

你的語法有點不對;應該是:

WHERE 
DateColumn >= 
    CASE WHEN DATEPART(dw,GETDATE()) = 1 -- datepart returns an integer, so no quotes 
    THEN DATEADD(wk,DATEDIFF(wk,0,GETDATE()) - 1,0) 
    ELSE DATEADD(wk,DATEDIFF(wk,0,GETDATE()),0) 
    END 
+0

謝謝!我現在將會更多地使用它,我知道如何正確設置它! –