我们如何将儒略日期的时间部分 (HH:MM:SS) 转换为 sql 服务器中的正常日期时间?

How can we convert the time portion(HH:MM:SS) of a julian date to normal date time in sql server?

我的 table-TimeUpdated 中有一个专栏,但从源进入该专栏的数据采用 Julian 日期时间格式。

我发现下面这个查询将 julian 时间戳的日期部分转换为正常时间戳 -

 declare @a as int = 2458228
 select @a, dateadd(d,@a - 2440588,'1970-01-01')

但我不知道如何转换小时-分钟-秒部分。有人可以帮忙吗?提前致谢。

P.S。 - Julian 中的 2458228.05929 表示 19-04-2018 18:55:20 IST。您也可以参考这个网站,它将任何一天转换为 Julian Datetime - http://www.onlineconversion.com/julian_date.htm

如果我没理解错的话,正确的表达应该是:

DECLARE @a int = '2440588';
DECLARE @Julian decimal(16,5) = 2458228.05929;

SELECT DATEADD(DAY,CONVERT(int,@Julian) - @a, '19700101') +
       DATEADD(HOUR,12,DATEADD(SECOND,(60 * 60 * 24) * (@Julian - convert(int,@Julian)),0));

这给出了 UTC 时间 2018-04-19 13:25:22.000(如果转换为 IST(印度标准时间 (UTC +5:30),对于不知道时区的人来说)是 2018-04-19 18:55:22.000