Sql server 在sqlserver中将bigint转换为datetime

Sql server 在sqlserver中将bigint转换为datetime,sql-server,datetime,type-conversion,bigint,Sql Server,Datetime,Type Conversion,Bigint,我正在尝试将我的bigint转换为日期和时间。我使用了下面的链接作为向导,但它并没有像预期的那样工作,因为根据我对这个解决方案的理解,它是基于千分之一秒的 我使用了以下编码并尝试了以下操作: declare @starttime as bigint; set @starttime = '2021021209295600000'; Select dateadd(HOUR, (@starttime / 100000) % (24 * 60 * 60), datea

我正在尝试将我的bigint转换为日期和时间。我使用了下面的链接作为向导,但它并没有像预期的那样工作,因为根据我对这个解决方案的理解,它是基于千分之一秒的

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


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
这并不漂亮,但我会
将其转换为
varchar
,注入一些所需字符,然后
将其转换为
日期时间
(因为您有5位小数,我假设它实际上是一个
日期时间2(5)
):

将@starttime声明为bigint;
设置@starttime=2021021209295600000;
选择CONVERT(日期时间2(5)、STUFF(STUFF(STUFF)(STUFF(转换(varchar(20),@starttime),15,0',')、13,0',:'、11,0',:'、9,0,'T')、7,0',-'、5,0',-);

谢谢。我甚至尝试过类似的方法,但是出现了一个错误,
选择convert(datetime,cast(@starttime/100000 as varchar(14)),101)
,但是您的工作正常,因为
'20210212092956'
也不是有效值,@AnnaliseAzzopardi,它没有任何分隔符(例如
-
)。这就是所有那些
函数都在做的事情;将字符注入正确的位置。是否可以只选择日期而不是日期和时间。我尝试了以下操作,但出现了一个错误:
,CONVERT(日期,STUFF(CONVERT(char(8),@starttime),7,0',-',5,0',-'))作为仅日期
使用
日期
,@AnnaliseAzzopardi。