来自 csv 文件的 SQL 服务器日期时间的 SSIS Unix 时间戳
SSIS Unix timestamp to SQL Server datetime from csv file
我已经尝试了几种方法来让它工作,但到目前为止,使用派生列将 Unix 转换为日期时间都没有成功。
有问题的列作为 DT_WSTR(我也尝试过 DT_I4 和 DT_I8)和派生列加载然后应该用日期时间创建新列。
这是我目前拥有的:
DATEADD("ss", (dt_i4)[logged_date], (dt_date)("1970-01-01"))
当我尝试执行时,我在派生列中收到一个错误,它只是指出
"An error has occurred while evaluating the function"
如有任何帮助,我们将不胜感激。
如果您的时间戳以秒为单位
Select dateadd(SS,1476444566,'1970-01-01') Returns 2016-10-14 11:29:26.000
如果微秒(需要多一点工作d(
Declare @UnixTime bigint = 1470562081943371
Select DateAdd(MS,round(((@UnixTime/1000000.)-(@UnixTime/1000000))*1000,0),DateAdd(SECOND,(@UnixTime/1000000),'1970-01-01 00:00:00'))
找到我的问题。
原来有一行的 unix 日期为空值,这就是 SSIS 在转换时遇到问题的原因。
我已经设置了一个错误输出,以便在它再次发生时放入 excel 文件。
代码现在按预期运行。
感谢您提供的帮助。
我已经尝试了几种方法来让它工作,但到目前为止,使用派生列将 Unix 转换为日期时间都没有成功。
有问题的列作为 DT_WSTR(我也尝试过 DT_I4 和 DT_I8)和派生列加载然后应该用日期时间创建新列。
这是我目前拥有的:
DATEADD("ss", (dt_i4)[logged_date], (dt_date)("1970-01-01"))
当我尝试执行时,我在派生列中收到一个错误,它只是指出
"An error has occurred while evaluating the function"
如有任何帮助,我们将不胜感激。
如果您的时间戳以秒为单位
Select dateadd(SS,1476444566,'1970-01-01') Returns 2016-10-14 11:29:26.000
如果微秒(需要多一点工作d(
Declare @UnixTime bigint = 1470562081943371
Select DateAdd(MS,round(((@UnixTime/1000000.)-(@UnixTime/1000000))*1000,0),DateAdd(SECOND,(@UnixTime/1000000),'1970-01-01 00:00:00'))
找到我的问题。
原来有一行的 unix 日期为空值,这就是 SSIS 在转换时遇到问题的原因。
我已经设置了一个错误输出,以便在它再次发生时放入 excel 文件。
代码现在按预期运行。
感谢您提供的帮助。