2014-07-10 109 views
2

다음은 날짜로 간주되는 샘플 데이터 집합입니다. 어떤 형식이어야하는지 잘 모르겠지만 줄리안 날짜라고 들었습니다.줄리안 날짜를 Oracle 날짜 형식으로 변환하는 방법?

 DATE 
    92017 
    92320 
    99002 
    99003 
    112010 
    112011 
    112012 
    112013 

누구든지 오라클 날짜로 변환 할 수 있습니까? 시도 :

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; 

감사

+0

내가 그 줄리안의 정의에 따르면 단지 이것은 4713 년 1 월 1 일 이후의 일수입니다. 92017/365의 빠른 계산은 약 252 년을 제공합니다. 아직 AD에 도달하지는 못합니다. 줄리언 수식에서 그 숫자를 사용하면 얻는 것이 있습니다. 아마도 다른 번호를 먼저 추가해야 할 것입니다. –

+0

내 경험으로 사람들은 때때로이 자료를 Excel에서 복사합니다. 엑셀에서 그 숫자는 번역 : 2151년 12월 6일 2152년 10월 4일 2171년 1월 20일 2171년 1월 21일 2206년 9월 2일 2206년 9월 3일 2206년 9월 4일 (9)/5/2206 - 당신이 다루고있는 데이터가 옳은 것처럼 보입니까? – Bob

+0

@Bob 입력 해 주셔서 감사합니다. 아니요,이 날짜는 최대 10 년에서 20 년 이내 여야합니다. – JohnD

답변

1

- JD 에드워즈를 사용 - DATE 숫자

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

경우 JD 에드워즈 날짜 변환을 사용하여 DATE가 문자열 인 경우 날짜 변환

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

오류 받기 : ORA-00936 : 표현이 누락되어 있습니다. –

+0

각 명령문에 두 개의 DATE 항목이 있으므로 사용중인 번호 (또는 문자열)로 둘 다 바꾸어야합니다. 이 둘은 Oracle 10g 및 Oracle 11g에서 오류없이 작동합니다. 현재로서는 다른 어떤 것도 테스트 할 수 없습니다. – Bob

+0

@bob 데이터 변환 후 결과가 올바르게 보이지는 않지만 스크립트와 아무 관련이 없지만. 스크립트가 실행됩니다. 이러한 데이터가 손상되었거나 뭔가 빠졌습니다. 감사 – JohnD

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