У меня есть пакет, который нужно запускать каждый понедельник, потому что все даты файла имеют даты понедельника для каждой отправляемой недели. Если по какой-то причине пакет не работает, я хочу написать его так, чтобы кто-нибудь еще мог запустить его в любой другой день недели. Независимо от того, в какой день он запускается, он должен генерировать дату понедельника каждой недели, чтобы подобрать правильный файл.
Я пытался использовать следующее выражение, но оно генерировало дату понедельника на прошлой неделе, когда оно запускалось в понедельник:
DATEADD( "dd", -1 - (DATEPART("dw", GETDATE()) + 4) % 7, GETDATE() ).
Я несколько раз менял параметры, но все равно не мог заставить его работать.
Кто-то дал мне это выражение, но оно не сработало в понедельник даже после изменения параметров:
DATEADD( "dd", (DATEPART( "dw", GETDATE() ) -3), GETDATE() )
Наконец, я попытался использовать следующий оператор, который эквивалентен оператору Case в SQL, но он дал мне ошибку в первой части каждой строки, показанной ниже (ПРИМЕЧАНИЕ: квадратные скобки не были включены).
[ DATEPART( "dw", GETDATE()) ]
См. Мое полное выражение ниже:
DATEPART( "dw", GETDATE()) == 1 ? DATEADD( "dd", 1, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 2 ? DATEADD( "dd", 0, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 3 ? DATEADD( "dd", -1, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 4 ? DATEADD( "dd", -2, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 5 ? DATEADD( "dd", -3, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 6 ? DATEADD( "dd", -4, GETDATE()) : (
DATEPART( "dw", GETDATE()) == 7 ? DATEADD( "dd", -5, GETDATE()) ))))))
Может кто-нибудь помочь мне решить эту проблему?
Заранее спасибо.