在 SSIS 作业中将数字 (32,0) 转换为日期时间



我的数据源给了我一列类型为 numeric(32,0) 的列,即纪元值,我想将其转换为数据库中的DATETIME。 我有一个派生列转换,对于表达式,我尝试这样做:

DATEADD("SECOND", CAST([Last Modified Date] AS BIGINT) / 1000, (DT_DBTIMESTAMP)"1970-01-01")

但它给了我解析错误。 有人可以帮助我正确语法吗?如果我不引用"SECOND"那么它会立即告诉我 SECOND 不是输入列。

即使输入是numeric(32,0)类型,它们也是整数值,例如1564371486110。

我不会立即理解您的演员阵容并除以 1000。

SSMS

select datediff(ss,  '1970-01-01 00:00:00', getdate())
1564069434

表达

dateadd("SS", 1564069434, (DT_DBTIMESTAMP)"1970-01-01 00:00:00")
2019-07-25 15:51:17.763

编辑 - 我将假设您在纪元时间上划分毫秒。

派生列转换编辑器 - 表达式

 DATEADD("SS",(DT_UI8)SUBSTRING((DT_WSTR,32)epochtime,1,LEN(TRIM((DT_WSTR,32)epochtime)) - 3),(DT_DBTIMESTAMP)"1970-01-01 00:00:00")

最新更新