| Categoría : Programación
Autor : Josue Ramirez Reyes
Título : Funcion para convertir fecha juliana
para usarse en codigo SQL
Descripción del truco:
En la mayoria de los ERP comerciales usados para AS/400,
las bases de datos, utilizan el formato juliano para
la representacion de una fecha, es decir un dato numerico.
Pero cuando usted desea hacer una consulta, necesita
saber el dato o de otra manera tener que convertirlo
cada vez que lo accesa.
Lo cual representa un verdadero problema, he aqui una
solucion.
Saludos.
1.- Necesitamos crear un miembro con el formato
TXT. (Esto se convertira en una funcion utilizable
desde cualquier codigo)
2.- Escriba el siguiente codigo:
CREATE FUNCTION JUL2DAT(fecha_jul DECIMAL(8,0))
RETURNS DATE
LANGUAGE SQL
CONTAINS SQL
NO EXTERNAL ACTION
SET OPTION DATFMT = *DMY, DATSEP = \'/\'
BEGIN
DECLARE fecret VARCHAR(10);
DECLARE fecyea CHAR(3);
DECLARE fecdia CHAR(3);
DECLARE intyea INTEGER;
DECLARE feccha CHAR(10);
DECLARE feccha2 DATE;
DECLARE fecret2 CHAR(20);
DECLARE largo INTEGER;
IF fecha_jul > 1 THEN
SET fecret = CHAR(fecha_jul);
SET fecret = TRIM(fecret);
SET largo = LENGTH(fecret);
IF largo = 5 THEN
SET fecyea = SUBSTR(fecret,1,2);
SET fecdia = SUBSTR(fecret,3,3);
ELSE
SET fecyea = SUBSTR(fecret,1,3);
SET fecdia = SUBSTR(fecret,4,3);
END IF;
SET intyea = 1900 + INTEGER(fecyea);
SET feccha = TRIM(CHAR(intyea)) || TRIM(fecdia);
SET feccha2 = DATE(TRIM(feccha));
ELSE
SET feccha2 = DATE(\'01/01/90\');
END IF;
RETURN feccha2;
END 3.- Grabe el miembro.
4.- Compilelo con el comando RUNSQLSTM y llene los
parametros necesarios.
5.- Para comprobar que funcione, ejecute el comando
STRSQL y desde la linea de comandos escriba la siguiente
sentencia SQL:
SELECT JUL2DAT(campo_fecha juliana) FROM LIB/FILE <ENTER>
6.- Si logro ver la fecha convertida usted esta listo
para usar una fecha juliana en comparaciones con una
fecha tipo DATE. NOTA: Esta funcion trasnforma la fecha a un formato
DD/MM/YY, si desea otro formato, solo modifique el
orden en el CONCAT.
Fecha 08-06-2005
Tienes algún truco que quieras compartir con todos
los profesionales de Recursos iSeries AS400?. Envianoslo
y si resulta seleccionado te enviaremos un vale de
Amazon por valor de 50$
|