我有一个SSIS包,可以执行包含条件的SP:
myText
我原以为,如果是星期一,星期三或星期五,则SP将继续执行操作,否则将if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
return 0
...
就是这样。
但是,此条件似乎在每天都成功,并且SP始终返回0并且不执行任何操作。我很困惑。
我该如何识别MWF并继续下去,否则停止?
谢谢
答案 0 :(得分:1)
错误(如果我理解您的问题正确)是您情况的逻辑所在。我的猜测是您实际上需要AND
而不是OR
s。可以简化为IN
/ NOT IN
:
declare @dw smallint
set @dw = DATEPART(dw,GETDATE())
if @dw in (1, 3, 5, 7)
return 0
或
...
if @dw not in (2, 4, 6)
return 0
请注意,有一个DATE_FIRST选项可以更改星期几的顺序(数字)。
PS
一些描述:
if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
此条件始终适用,因为一天中的同一天不能同时是一周的第二天,第四天和第六天。如果是一周的第二天,则第一个条件“失败”,而下一个条件成功,因为2 != 4
。