在SQL Server中转换bigint纪元

时间:2019-06-21 07:56:24

标签: sql-server epoch bigint azure-sqldw

在Azure数据仓库中将unix epoch时间戳转换为正常日期时间时遇到麻烦:

select 
    dateadd(s, convert(bigint, 2551564800), convert(datetime, '1-1-1970 00:00:00')) as bigint

错误:

  

将表达式转换为数据类型int的算术溢出错误。

值2551564800等于09/11/2050。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

如果您没有超过5103129600的纪元值(这将使您拥有直至2106-02-07T06:28:13的日期),它将起作用:

SELECT DATEADD(SECOND,2551564800 % 2147483647, DATEADD(SECOND,2147483647 * (V.Epoch / 2147483647),'19700101'))
FROM (VALUES(CONVERT(bigint,2551564800))) V(Epoch)