Когда переменная является выражением, она вычисляется каждый раз, когда ее используют, поэтому функция GETDATE()
будет возвращать другое значение каждый раз, когда вы вызываете переменную, вместо этого используется задача выражения, которая будет оценивать значение переменной только после выполнения.,
Таким образом, вместо оценки переменных в качестве выражения в свойствах переменной, добавьте задачу выражения перед задачей потока данных и используйте следующее выражение:
@[User::FilePath] = @[User::DestinationDirectory]
+ "\\files\\Charges_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2)
+ "_"
+ (DT_STR, 4, 1252) DATEPART("yyyy" , GETDATE())
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", GETDATE()), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", GETDATE()), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", GETDATE()), 2)
+ ".csv"
Обновление 1
На основании комментариев, если у вас есть 16 переменных.В этом случае вам следует добавить переменную типа Date
, присвоить ее значение с помощью Expression Task
и использовать эту переменную вместо GETDATE()
в выражении переменных.пример:
Задание выражения
@[User::FileDate] = GETDATE()
Переменное выражение
@[User::FilePath] = @[User::DestinationDirectory]
+ "\\files\\Charges_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , @[User::FileDate]), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , @[User::FileDate]), 2)
+ "_"
+ (DT_STR, 4, 1252) DATEPART("yyyy" , @[User::FileDate])
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[User::FileDate]), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[User::FileDate]), 2)
+ "_"
+ RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[User::FileDate]), 2)
+ ".csv"