我们怎样才能将julian日期的时间部分(HH:MM:SS)转换为sql server中的正常日期时间?

时间:2018-04-19 13:29:52

标签: sql sql-server math julian julian-date

我的表格中有一列 - TimeUpdated ,但是来自此列的数据源自Julian日期时间格式。

我发现以下查询将julian timestam的Date部分转换为正常时间戳 -

 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

1 个答案:

答案 0 :(得分:1)

如果我理解正确,那么正确的表达方式是:

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