Algoritmo fechas julianas a gregorianas en Oracle
Publicado por Ximena (1 intervención) el 16/11/2010 21:51:14
Estimados.
Necesito su ayuda a fin de tener una función que convierta una fecha juliana a gregoriana, pero con sentencias de oracle, para que tome en cuenta los años bisiestos.
Tengo esta función, pero necesito ayuda para que incluya los años bisiestos.
CREATE OR REPLACE FUNCTION TO_JDECHAR (JDE_DATE IN CHAR)
RETURN VARCHAR2
IS
JDE_DATE1 NUMBER(6);
STR_ANNO CHAR(4);
STR_GIORNO CHAR(3);
STR_DATE DATE;
BEGIN
--
IF TO_NUMBER(JDE_DATE) = 0 THEN
JDE_DATE1 := 1;
ELSE
JDE_DATE1 := TO_NUMBER(JDE_DATE);
END IF;
--
STR_ANNO := TO_CHAR(1900 + TO_NUMBER(SUBSTR(LPAD(TO_CHAR(JDE_DATE1), 6, '0'), 1, 3)));
STR_GIORNO := SUBSTR(LPAD(TO_CHAR(JDE_DATE1), 6, '0'), 4, 3);
--
STR_DATE := TO_DATE(STR_ANNO || '-' || STR_GIORNO, 'YYYY-DDD');
--
RETURN(TO_CHAR(STR_DATE, 'DD/MM/YYYY'));
EXCEPTION
WHEN OTHERS THEN
RETURN('01/01/1500');
END TO_JDECHAR;
gracias por la atención
Necesito su ayuda a fin de tener una función que convierta una fecha juliana a gregoriana, pero con sentencias de oracle, para que tome en cuenta los años bisiestos.
Tengo esta función, pero necesito ayuda para que incluya los años bisiestos.
CREATE OR REPLACE FUNCTION TO_JDECHAR (JDE_DATE IN CHAR)
RETURN VARCHAR2
IS
JDE_DATE1 NUMBER(6);
STR_ANNO CHAR(4);
STR_GIORNO CHAR(3);
STR_DATE DATE;
BEGIN
--
IF TO_NUMBER(JDE_DATE) = 0 THEN
JDE_DATE1 := 1;
ELSE
JDE_DATE1 := TO_NUMBER(JDE_DATE);
END IF;
--
STR_ANNO := TO_CHAR(1900 + TO_NUMBER(SUBSTR(LPAD(TO_CHAR(JDE_DATE1), 6, '0'), 1, 3)));
STR_GIORNO := SUBSTR(LPAD(TO_CHAR(JDE_DATE1), 6, '0'), 4, 3);
--
STR_DATE := TO_DATE(STR_ANNO || '-' || STR_GIORNO, 'YYYY-DDD');
--
RETURN(TO_CHAR(STR_DATE, 'DD/MM/YYYY'));
EXCEPTION
WHEN OTHERS THEN
RETURN('01/01/1500');
END TO_JDECHAR;
gracias por la atención
Valora esta pregunta


0