Oracle 查询从 Julian 值转换为 Date with Time

标签 oracle timestamp julian-date

我必须随时间从 Julian 值转换为常规日期。

Select to_char(to_date(2455198, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;

此查询有效,结果为 01-01-2010 12:00:00

Select to_char(to_date(2455197.75001, 'J'), 'DD-MM-YYYY HH:mm:ss') from dual;

上面的查询不起作用并出现此错误:

ORA:01830: date format picture ends before converting entire input string

Julian 值:2455197.75001 等效日期值为:1-January-2010 06:00:01

最佳答案

正如@Chris 所说,J 需要一个整数,因此您可以使用 floortrunc 来获取它,并将小数部分用作部分天数(和再增加半天,正如@Chris 在评论中指出的那样,以计算 Julian days starting at noon ):

Select to_char(
    to_date(floor(2455197.75001), 'J')
      + mod(2455197.75001, 1)
      + 0.5,
  'DD-MM-YYYY HH24:mi:ss')
from dual;

得到:

01-01-2010 06:00:01

请注意,我将 HH 更改为 HH24,并将第二个 mm 更改为 mi 分钟。

db<>fiddle

关于Oracle 查询从 Julian 值转换为 Date with Time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64769927/

相关文章:

java - 我可以使用 Java 时间库来转换同时包含日期和时间的儒略日期吗?

java - 如何在 Java 中将 "yyDHH"格式的 Julian 转换为 Date

oracle - Oracle 中的隐藏功能

sql - 在包含数百万行的表上创建索引会导致任何问题吗?在实时生产数据库中做同样的事情是否存在危险?

mysql - 对于 202 到 203 之间的每个 manager_id,显示每个经理监督的员工数量

c++ - 如何计算朱利安算术

sql-server - INSTR() 和 CHARINDEX() 之间有什么区别吗?

R时间戳差异打印

javascript - js中如何验证时间戳

sql - 如果不是今天的日期,则条件查询返回时间戳,否则返回时间