如何在 SQL Server 中将 UNIX 时间戳 (bigint) 转换为 DateTime?
这对我有用:
Select
dateadd(S, [unixtime], '1970-01-01')
From [Table]
万一有人想知道为什么 1970-01-01,这被称为大纪元时间.
以下是维基百科的引用:
自 1970 年 1 月 1 日星期四 00:00:00 协调世界时 (UTC) 以来经过的秒数,[1][注 1] 不包括闰秒。
2038 年问题
此外,DataAdd 函数需要一个int
添加的秒数。因此,如果您尝试添加超过2147483647
秒你会得到一个算术溢出错误。要解决此问题,您可以将添加分解为两次对 DateAdd 的调用,一次用于年份,一次用于剩余秒数。
Declare @t as bigint = 4147483645
Select (@t / @oneyear) -- Years to add
Select (@t % @oneyear) -- Remaining seconds to add
-- Get Date given a timestamp @t
Declare @oneyear as int = 31622400
Select DateAdd(SECOND, @t % @oneyear, DateAdd(YEAR, @t / @oneyear, '1970-01-01'))
这将允许您转换代表大于 2038 年的年份的时间戳。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)