如何将这些朱利安日期转换为oracle日期格式?

时间:2014-07-10 02:05:47

标签: oracle julian-date

以下是应该是日期的一组示例数据。我不确定它应该是什么样的格式但我被告知它们是朱利安日期。

     DATE
    92017
    92320
    99002
    99003
    112010
    112011
    112012
    112013

任何人都可以将它们转换为oracle日期吗?我试过了

select to_date(DATE,'J') from dual

但是有些结果发生在20世纪50年代和40年代,我们正在处理的数据并不合适。 我在这做吗?

我也从这个链接尝试了这个公式: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;

由于

4 个答案:

答案 0 :(得分:3)

- 如果DATE是数字

,则使用JD Edwards日期转换
select to_date(to_char(1900 + floor(DATE / 1000)),'YYYY') + mod(DATE,1000) - 1 from dual;

- 如果DATE是字符串,则使用JD Edwards日期转换

select to_date(to_char(1900 + floor(to_number(DATE) / 1000)),'YYYY') + mod(to_number(DATE),1000) - 1 from dual;

答案 1 :(得分:0)

如果您的日期字段是varchar:

select TO_DATE(TO_CHAR(to_number('115032')+1900000),'YYYYDDD') jdedate from dual;

如果您的日期字段是数字:

select TO_DATE(TO_CHAR(115032+1900000),'YYYYDDD') jdedate from dual;

返回:

JDEDATE
-----------
01/02/2015

答案 2 :(得分:0)

我发现从朱利安转换的最简单方法是:-

SELECT TO_CHAR(TO_DATE(your_julian_date,'JSP'),'dd-Mon-yyyy AD') AS DAY FROM dual;

此外,日期字段是数字还是字符串也没关系。如果是字符串,只需将儒略历日期放在单引号内。

此外,Oracle对Julian的定义是“自公元前4712年1月1日起的天数”。 (许多人错误地评论了公元前4713年)。 参考:https://asktom.oracle.com/pls/apex/asktom.search?tag=julian-date

答案 3 :(得分:-1)

简单

select to_date('0101'|| substr(TRN_REF_NO, 8,2), 'DDMMYY') + to_number(substr(TRN_REF_NO, 10,3)) - 1 Trn_dt