Oracle 将公历日期转换为朱利安日期

Oracle 将公历日期转换为朱利安日期,oracle,datetime,vbscript,Oracle,Datetime,Vbscript,您好,我正在尝试为Gregorian to Julian date和Julian to Gregorian创建一个函数,以便将来我可以在报告/查询/vbs脚本中使用这些函数,而无需将其包含在未来的所有工作中。这是针对oracle数据库的,我们使用的公历日期格式是ddmmyyyy。我试着使用下面的内容,返回今天的朱利安日期,但到目前为止,我还没有从格雷格转换成朱利安的运气 select sysdate, to_char(sysdate,'YDDD') "YDDD" from dual; 你可以使

您好,我正在尝试为Gregorian to Julian date和Julian to Gregorian创建一个函数,以便将来我可以在报告/查询/vbs脚本中使用这些函数,而无需将其包含在未来的所有工作中。这是针对oracle数据库的,我们使用的公历日期格式是ddmmyyyy。我试着使用下面的内容,返回今天的朱利安日期,但到目前为止,我还没有从格雷格转换成朱利安的运气

select sysdate, to_char(sysdate,'YDDD') "YDDD" from dual;
你可以使用一个有用的链接

格鲁吉亚语对朱利安

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')

Oracle对Julian date的内置支持有限:


从双重选择到数字(到字符(SYSDATE,'J'))到朱利安,到日期(2457259,'J')到格里高利,您可以使用以下转换示例:

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中的这项工作非常有效