2016-08-05 42 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

谢谢!我现在将会更多地使用它,我知道如何正确设置它! –