在 SQL 服务器中转换 bigint 纪元

Convert bigint epoch in SQL Server

当我在 Azure 数据仓库中将 unix 纪元时间戳转换为正常日期时间时,我 运行 遇到了麻烦:

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

错误:

Arithmetic overflow error converting expression to data type int.

值 2551564800 等于 09/11/2050。

任何帮助将不胜感激

如果 你没有大于 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)