У меня есть пакет, который нужно запускать каждый понедельник, потому что все даты файлов имеют даты понедельника для каждой недели, когда он отправляется. Если пакет по какой-то причине не работает, я хочу написать его таким образом, чтобы любой другой мог повторно запустить его в любой другой день недели. Независимо от того, в какой день он запускается, он должен генерировать дату понедельника каждой недели, чтобы выбрать правильный файл.
Я попытался использовать следующее выражение, но оно сгенерировало дату понедельника прошлой недели, когда оно запускается в понедельник:
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()) ))))))
Может ли кто-нибудь помочь мне решить эту проблему?
Заранее спасибо.