以下是应该是日期的一组示例数据。我不确定它应该是什么样的格式但我被告知它们是朱利安日期。
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;
由于
答案 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