如何将@ [System :: ContainerStartTime]转换为UTC

时间:2018-01-31 11:13:34

标签: ssis

我正在使用@[System::ContainerStartTime]来获取ETL过程的开始时间。 为此,我使用派生列创建了一个新列。

但是,SSIS只允许将结果存储为datetime,因此不提供时区信息。

如何将此转换为与GETUTCDATE()类似的UTC日期时间?

1 个答案:

答案 0 :(得分:2)

创建一个Integer变量User :: TimeShift,使用以下表达式为其分配SSIS表达式任务

DATEDIFF("Second",GETDATE(),GETUTCDATE())

然后在派生列转换中使用此变量

DATEADD("Second",@[User::TimeShift], <LocalDateTimeColumn>)

首先初始化偏移变量,然后重复使用它,避免多次调用GETDATE(),这不会提高性能。如果不考虑性能,则可以执行不带中间变量的派生列

DATEADD("Second",DATEDIFF("Second",GETDATE(),GETUTCDATE()), <LocalDateTimeColumn>)