2013-05-13 4 views
0

Кто-нибудь знает, как конвертировать сегодняшнюю юлианскую дату (2456425) в JDE Julian date (113133)?Convert Julian date to JDE Julian date

Благодаря

+0

Почему этот помеченный SQL Server и PL/SQL (Oracle)? Вы ищете решение как в TSQL, так и в PL/SQL? И это может помочь упомянуть, что такое «JDE Julian date». – Pondlife

+0

@Pondlife - Google - ваш друг [здесь] (http://bryantavey.com/2009/08/16/how-to-convert-enterpriseone-jde-julian-dates/) (хотя я согласен, что OP должен был включать некоторое разнообразие ссылок на этот бит информации). –

+0

@BobJarvis Да, конечно, но я думаю, что бремя ответственности заключается в том, чтобы задавать вопросы (или, по крайней мере, ссылаться) на любые термины, которые могут быть не знакомы более широкой аудитории. – Pondlife

ответ

1

Для меня это выглядит как сегодняшними дата юлианского (по крайней мере, с точки зрения Oracle,) должны быть 2456426. Но, хорошо, если в ваших условиях сегодня (13 мая 2013) Джулиан дата 2456425 тогда следующее код должен получить то, что вы хотите:

DECLARE 
    nJulian NUMBER := 2456425; 
    nCentury NUMBER; 
    nYear  NUMBER; 
    nDay  NUMBER; 
    nJDEdate NUMBER; 
BEGIN 
    DBMS_OUTPUT.PUT_LINE('Date=' || TO_DATE(nJulian+1, 'J')); 

    nCentury := TRUNC(TO_NUMBER(TO_CHAR(TO_DATE(nJulian+1, 'J'), 'YYYY'))/100) - 19; 

    DBMS_OUTPUT.PUT_LINE('nCentury=' || nCentury); 

    nYear := TO_NUMBER(TO_CHAR(TO_DATE(nJulian+1, 'J'), 'YYYY')) - 
      (TRUNC(TO_NUMBER(TO_CHAR(TO_DATE(nJulian+1, 'J'), 'YYYY'))/100) * 100); 

    DBMS_OUTPUT.PUT_LINE('nYear=' || nYear); 

    nDay := TO_NUMBER(TO_CHAR(TO_DATE(nJulian+1, 'J'), 'DDD')); 

    DBMS_OUTPUT.PUT_LINE('nDay=' || nDay); 

    nJDEdate := (nCentury * 100000) + (nYear * 1000) + nDay; 

    DBMS_OUTPUT.PUT_LINE('nJDEdate=' || nJDEdate); 
END; 

Делитесь и наслаждайтесь.

Смежные вопросы