如果纪元超过 2038 年,如何将纪元转换为 DateTime SQL Server?
回答于将纪元转换为日期时间 SQL Server不管用。
Example:
SELECT DATEADD(ss, 2713795200000 / 1000, '19700101')
2055 年 12 月 30 日星期四 16:00:00 GMT
DATEADD 函数假定 INT 作为日期的增量,为了绕过 INT 的限制,您可以降低纪元的精度,或者执行稍微复杂的代码来保留纪元的精度。
这会将精度降低到分钟:
SELECT DATEADD(MINUTE,@YourEpoch/60/1000, '1/1/1970')
这个将您的纪元分割为天和毫秒,然后将它们组合在一个日期时间中
CREATE FUNCTION [dbo].[fn_EpochToDatetime] (@Epoch BIGINT)
RETURNS DATETIME
AS
BEGIN
DECLARE @Days AS INT, @MilliSeconds AS INT
SET @Days = @Epoch / (1000*60*60*24)
SET @MilliSeconds = @Epoch % (1000*60*60*24)
RETURN (SELECT DATEADD(MILLISECOND, @MilliSeconds, DATEADD(DAY, @Days, '1/1/1970')))
END;
但是,我不太确定为什么第二个解决方案没有我期望的那么精确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)