根据星期几控制SP代码流

时间:2019-04-02 12:35:23

标签: sql-server tsql

我有一个SSIS包,可以执行包含条件的SP:

myText

我原以为,如果是星期一,星期三或星期五,则SP将继续执行操作,否则将if (DATEPART(dw,GETDATE()) != 2 OR DATEPART(dw,GETDATE()) != 4 OR DATEPART(dw,GETDATE()) != 6) return 0 ... 就是这样。

但是,此条件似乎在每天都成功,并且SP始终返回0并且不执行任何操作。我很困惑。

我该如何识别MWF并继续下去,否则停止?

谢谢

1 个答案:

答案 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