微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle查询随时间从儒略值转换为日期

如何解决Oracle查询随时间从儒略值转换为日期

我必须随时间将儒略值转换为常规日期。

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,'DD-MM-YYYY HH:mm:ss') from dual;

上述查询无法正常工作,并出现以下错误ORA:01830: date format picture ends before converting entire input string

Julian值: 2455197.75001 ,等效日期值为: 2010年1月1日06:00:01

谢谢。

解决方法

正如@Chris所说,J需要一个整数,因此您可以使用floortrunc来获得整数,并将小数部分用作不完整天数(再加上半天,正如@Chris在评论中指出的,要计入儒略时代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

,

您不能将分数与Julian值一起使用。作为docs state

朱利安日;自公元前4712年1月1日以来的天数。 编号 用J指定的必须是整数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。