Tsql UTC日期至CST日期
我需要帮助将保存为bigint编号1538397000000的UTC日期转换为CST日期时间。 我试过了Tsql UTC日期至CST日期,tsql,Tsql,我需要帮助将保存为bigint编号1538397000000的UTC日期转换为CST日期时间。 我试过了 select Dateadd(s,convert(Bigint,1538397000000/1000,convert(datetime,'1-1-1970')) 您可以创建一个将UTC转换为本地时间的函数。假设上面的代码正确地将bigint转换为正确的UTC日期/时间值,那么下面的代码将该值转换为CST create function UTCDateTime
select
Dateadd(s,convert(Bigint,1538397000000/1000,convert(datetime,'1-1-1970'))
您可以创建一个将UTC转换为本地时间的函数。假设上面的代码正确地将bigint转换为正确的UTC日期/时间值,那么下面的代码将该值转换为CST
create function UTCDateTimeToLocal(@value datetime) returns datetime as
begin
declare @utc datetime = getutcdate()
,@local datetime = getdate()
,@diff int
,@rtn datetime
set @diff = datediff(millisecond, @utc, @local)
set @rtn = dateadd(millisecond, @diff, @value)
return @rtn
end
go
select dbo.UTCDateTimeToLocal(dateadd(s,cast(1538397000000/1000 as bigint),convert(datetime,'1-1-1970')))
--drop function UTCDateTimeToLocal
为什么一开始就将日期存储为大整数?为什么不将它们正确地存储为Date或DateTime2?这是来自供应商的数据,也是它们存储数据的方式。在SQl Server 2016中无法识别UTCDateTimeLocal我忘记了UTCDateTimeToLocal是我编写的函数。我更新了答案以包含函数的SQL。我使用它太久了,我以为它是SQL Server的一部分。。。对不起!