我正在使用@[System::ContainerStartTime]
来获取ETL过程的开始时间。
为此,我使用派生列创建了一个新列。
但是,SSIS只允许将结果存储为datetime
,因此不提供时区信息。
如何将此转换为与GETUTCDATE()
类似的UTC日期时间?
答案 0 :(得分:2)
创建一个Integer变量User :: TimeShift,使用以下表达式为其分配SSIS表达式任务
DATEDIFF("Second",GETDATE(),GETUTCDATE())
然后在派生列转换中使用此变量
DATEADD("Second",@[User::TimeShift], <LocalDateTimeColumn>)
首先初始化偏移变量,然后重复使用它,避免多次调用GETDATE()
,这不会提高性能。如果不考虑性能,则可以执行不带中间变量的派生列
DATEADD("Second",DATEDIFF("Second",GETDATE(),GETUTCDATE()), <LocalDateTimeColumn>)