Вот возможное решение, которое позволит вам достичь этого.
В пакете служб SSIS объявите четыре переменные области видимости пакета.
TodaysDate - Переменная типа DateTime
. Когда вы установите DateTime, переменная будет назначена с текущей датой и временем. Вы также можете изменить это и установить дату на ваш выбор.
OffsetValue - Переменная типа Int32
. Это будет содержать значение смещения. Для этого примера я выбираю значение смещения в днях. Итак, я установил его на значение 7.
OffsetDate - переменная типа DateTime
. Выберите эту переменную и нажмите F4, чтобы просмотреть свойства. Измените свойство EvaluateAsExpression на True
. Установите для Expresstion значение DATEADD( "dd", @[User::OffsetValue] , @[User::TodaysDate] )
. Это выражение добавляет значение смещения к переменной TodaysDate, чтобы вы получили новый OffsetDate.
FormattedDate - Переменная типа String
. Выберите эту переменную и нажмите F4, чтобы просмотреть свойства. Измените свойство EvaluateAsExpression на True
. Установите Expresstion на следующее значение
RIGHT((DT_STR,4,1252)YEAR(DATEADD("dd",0, @[User::OffsetDate] )),4) +""+
RIGHT("0" +(DT_STR,4,1252)MONTH(DATEADD("dd",-1,@[User::OffsetDate])),2)+""+
RIGHT("0" +(DT_STR,4,1252)DAY(DATEADD("dd",0,@[User::OffsetDate])) ,2)
Единственная разница в том, что вы форматируете дату по вашему выбору, здесь в этом случае значение в переменной OffsetDate
. Эта переменная будет содержать дату, которая уже была смещена.
На скриншоте ниже показан пример. Переменная TodaysDate установлена в 11/28/2011
. Добавление 7 дней к переменной устанавливает для поля OffsetDate значение 12/05/2011
. Как видите, переменная FormattedDate форматирует новую дату смещения в 20111205
.
Этот пример также можно сделать с переменной one less, исключив переменную TodaysDate . Вы также можете иметь одну переменную смещения для каждого типа, например, дни, месяцы и годы. Все сводится к предпочтениям.
Я надеюсь, что это то, что вы искали, и, вероятно, даст вам представление о том, как этого достичь.