我有一个SSIS包,它执行一个包含条件的SP:
if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
return 0
...
我预计如果是星期一、星期三或星期五,那么 SP 会继续做事,否则它会return 0
,仅此而已。
但是,这种情况似乎每天都会成功,并且 SP 始终返回 0 并且不执行任何操作。 我很困惑。
如何使其识别 MWF 并继续,否则停止?
谢谢
错误(如果我正确理解你的问题(在于你的条件的逻辑。我的猜测是,你实际上需要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选项可以更改工作日的顺序(数字(。
附言一些描述: if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6)
此条件始终为 true,因为一天不能同时是一周的第 2、4 和 6 天。如果是一周的第二天,则第一个条件"失败",而下一个条件成功,因为2 != 4
。