Управление потоком кода SP в зависимости от дня недели - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть пакет служб 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 и продолжить, иначе остановится?

Спасибо

1 Ответ

1 голос
/ 02 апреля 2019

Ошибка (если я правильно понимаю вашу проблему) заключается в логике вашего состояния.Я предполагаю, что вам действительно нужно AND с вместо OR с.Что может быть упрощено до 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-м и 6-м днем ​​недели одновременно.Если это 2-й день недели, то первое условие «проваливается», а следующее - потому что 2 != 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...