【发布时间】:2014-08-31 05:29:57
【问题描述】:
下面是一组应该是日期的样本数据。我不确定它应该是哪种格式,但有人告诉我它们是朱利安日期。
DATE
92017
92320
99002
99003
112010
112011
112012
112013
任何人都可以将它们转换为 oracle 日期吗?我试过了
select to_date(DATE,'J') from dual
但有些结果是在 1950 年代和 1940 年代,这与我们正在处理的数据不相符。 我在这里做吗?
我也通过这个链接尝试了这个公式:http://www.kirix.com/stratablog/jd-edwards-date-conversions-cyyddd
SELECT
TO_DATE(1900+(DATE/1000),1,1)+
TO_NUMBER(SUBSTR(TO_CHAR(DATE),4))-1 FROM DUAL;
谢谢
【问题讨论】:
-
根据刚才查到的Julian的定义,这是从公元前4713年1月1日开始的天数。 92017/365 的快速计算给了我们大约 252 年,这甚至还没有进入 AD 的范围。在朱利安公式中使用这些数字,这就是你得到的。也许您需要先向它们添加另一个数字。
-
根据我的经验,人们有时会从 excel 中复制这些东西。 excel 中的这些数字转换为: 12/6/2151 10/4/2152 1/20/2171 1/21/2171 9/2/2206 9/3/2206 9/4/2206 9/5/2206 - 执行这些您正在处理的数据看起来是否正确?
-
@Bob 感谢您的意见。不,这些日期最多应该在 10 到 20 年之间。
-
我猜它们必须是特定开始日期之后的天数。我认为你应该回到那个告诉你他们是 Julian 的人,并让他再试一次。
-
@JohnD。我在原始问题中添加了您的评论。您能否在原始问题中扩展“不起作用”? julian 的官方定义和 Oracle 定义是“自 4713 年 1 月 1 日起”。我认为该链接中的定义是“自 1900 年 1 月 1 日以来”。同样,如果我们使用 92017,我们会得到 2152 年,它再次出现错误。您需要找出 Julian 开始日期的来源定义,并且需要确认您拥有的数字。这不是技术问题,而是沟通问题。
标签: oracle julian-date