您好我正在尝试为格里高利创建一个Julian日期& Julian到Gregorian,以便将来可以在reports / queries / vbs脚本中使用它们,而不必将其包含在前进的所有内容中。这是一个oracle数据库,我们使用的格里高利日期格式是ddmmyyyy。我曾尝试使用下面的内容返回今天的julian日期,但到目前为止我没有运气从greg转换为julian。
select sysdate, to_char(sysdate,'YDDD') "YDDD" from dual;
答案 0 :(得分: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 :(得分:0)
您可以使用以下转换示例:
select to_char('2017-06-24 13:27:14','YYYY-MM-DD','nls_calendar=persian') from dual
或这个
select to_char(sysdate,'YYYY-MM-DD','nls_calendar=persian') from dual
这项工作在oracle 12c中有效。