在 sqlserver 中将 bigint 转换为 datetime

时间:2021-02-12 10:01:20

标签: sql-server datetime type-conversion bigint

我正在尝试将 bigint 转换为日期和时间。我已使用以下链接作为指导,但它没有按预期工作,因为根据我在此解决方案中的理解,它基于毫秒。

Convert bigint to datetime

我有以下编码并尝试了以下操作:


declare @starttime as bigint;
set @starttime = '2021021209295600000';

Select dateadd(HOUR, (@starttime / 100000) % (24 * 60 * 60),
               dateadd(day, (@starttime / 100000) / (24 * 60 * 60), '1970-01-01'))

提示以下错误:

The data types time and datetime are incompatible in the add operator. 

同样如前所述,我已经尝试了上述解决方案,但是给出了以下输出,这是不正确的 select dateadd(s, convert(bigint, @starttime) / 1000, convert(datetime, '1-1-1970 00:00:00'))

有人可以帮我吗? 预期值2021-02-12 09:29:56

1 个答案:

答案 0 :(得分:1)

这不太好,但我会将它 CONVERTvarchar,注入一些需要的字符,然后 CONVERTdatetime(就像你有 5 个小数位,我认为它实际上是一个 datetime2(5)):

DECLARE @starttime as bigint;
SET @starttime = 2021021209295600000;

SELECT CONVERT(datetime2(5),STUFF(STUFF(STUFF(STUFF(STUFF(STUFF(CONVERT(varchar(20),@starttime),15,0,'.'),13,0,':'),11,0,':'),9,0,'T'),7,0,'-'),5,0,'-'));