Ошибка (если я правильно понимаю вашу проблему) заключается в логике вашего состояния.Я предполагаю, что вам действительно нужно 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
.