在 sqlserver 中将 bigint 转换为日期时间
Converting bigint to datetime in sqlserver
我正在尝试将我的 bigint 转换为日期和时间。我使用以下 link 作为指导,但它没有像预期的那样工作,因为根据我对该解决方案的理解,它是基于毫秒的。
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
这不是很漂亮,但我会 CONVERT
到 varchar
,注入一些需要的字符,然后 CONVERT
到 datetime
(因为你有 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,'-'));
我正在尝试将我的 bigint 转换为日期和时间。我使用以下 link 作为指导,但它没有像预期的那样工作,因为根据我对该解决方案的理解,它是基于毫秒的。
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
这不是很漂亮,但我会 CONVERT
到 varchar
,注入一些需要的字符,然后 CONVERT
到 datetime
(因为你有 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,'-'));