2015-08-23 8 views
1

Привет Я пытаюсь создать функцию для григорианской юлианской даты & Julian to Gregorian, чтобы я мог использовать их в сценариях отчетов/запросов/vbs в будущем без необходимости включать это во все перемещение вперед , Это для базы данных оракула, а формат gregorian date, который мы используем, - ddmmyyyy. Я попытался использовать нижеследующее ниже, которое возвращает дату julian, но мне не повезло до сих пор, переходя от greg к julian.Преобразовать григорианскую дату в Julian

select sysdate, to_char(sysdate,'YDDD') "YDDD" from dual; 

ответ

0

Полезная ссылка here вы можете использовать.

Грузии Юлиану

CREATE OR REPLACE FUNCTION DATE2JDE (yyyymmdd IN NUMBER) 
RETURN NUMBER 
IS 
v_jdedate NUMBER(6,0) := 0; 

BEGIN 
IF yyyymmdd BETWEEN 19000000 AND 28000000 THEN 
v_jdedate := TO_NUMBER(TO_CHAR(TO_DATE(yyyymmdd,'YYYYMMDD'),'YY YYDDD'))-1900000; 
ELSE 
RAISE_APPLICATION_ERROR(-20000, 'Invalid date in DATE2JDE - ' || yyyymmdd ||'.'); 
END IF; 

RETURN(v_jdedate); 

END; 

Джулиан грузински

v_oracle_date := to_date(to_char(v_JDEDate+1900000),'YYYYDDD') 
v_char_year := to_char(to_date(to_char(v_JDEDate+1900000),'YYYYDD D'),'YYYY') 
v_char_month := to_char(to_date(to_char(v_JDEDate+1900000),'YYYYDD D'),'MM') 
v_char_day := to_char(to_date(to_char(v_JDEDate+1900000),'YYYYDD D'),'DD') 
v_num_year := to_number(to_char(to_date(to_char(v_JDEDate+190000 0),'YYYYDDD'),'YYYY') 
v_num_month := to_number(to_char(to_date(to_char(v_JDEDate+190000 0),'YYYYDDD'),'MM') 
v_num_day := to_number(to_char(to_date(to_char(v_JDEDate+190000 0),'YYYYDDD'),'DD') 
1

Oracle имеет ограниченную встроенную поддержку для даты юлианского:

SELECT TO_NUMBER (TO_CHAR (SYSDATE, 'J')) TO_JULIAN, TO_DATE (2457259, 'J') TO_GREGORIAN FROM DUAL

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