[Pgsql-ayuda] años bisiestos........
GUSTAVO MARTIN OCAMPO
gocampo79@hotmail.com
Wed, 10 Dec 2003 15:59:13 +0000
Hola lista, tengo una funcion de la forma.......
CREATE OR REPLACE FUNCTION plpg_detalle_mensual(text, text) RETURNS SETOF
basemovim AS '
DECLARE
newrow basemovim%ROWTYPE;
mes ALIAS FOR $1;
anio ALIAS FOR $2;
BEGIN
IF mes = ''Enero'' OR mes = ''enero'' OR mes = ''ENERO'' THEN
FOR newrow IN Select basemovibanco.fecha_vencimiento,
sum(basemovibanco.importe) as
total, tabdebicredi.descripcion as debicredi from (basemovibanco inner join
tabdebicredi on
basemovibanco.id_debicredi = tabdebicredi.id_debicredi) where
basemovibanco.fecha_vencimiento
between cast(''01-01-'' || anio as date) and cast(''31-01-'' || anio as
date) group by
basemovibanco.fecha_vencimiento, debicredi order by
basemovibanco.fecha_vencimiento, debicredi
desc LOOP
RETURN NEXT newrow;
END LOOP;
END IF;
IF mes = ''Febrero'' OR mes = ''febrero'' OR mes = ''FEBRERO'' THEN
FOR newrow IN Select basemovibanco.fecha_vencimiento,
sum(basemovibanco.importe) as
total, tabdebicredi.descripcion as debicredi from (basemovibanco inner join
tabdebicredi on
basemovibanco.id_debicredi = tabdebicredi.id_debicredi) where
basemovibanco.fecha_vencimiento
between cast(''01-02-'' || anio as date) and cast(''28-02-'' || anio as
date) group by
basemovibanco.fecha_vencimiento, debicredi order by
basemovibanco.fecha_vencimiento, debicredi
desc LOOP
RETURN NEXT newrow;
END LOOP;
END IF;
..................(continua para los otros meses)
...
RETURN;
END;
' language plpgsql;
..o sea, los parametros que le paso son el mes y el año, ahora, mi problema
es con los años bisiestos, existe alguna funcion que me devuelva algun valor
booleano diciendome si un año es bisiesto? otra idea que se me ocurre es
crear otra funcion que, justamente, me diga si un año es bisiesto o no y
llamar a esta funcion desde la descripta mas arriba, se puede hacer esto?
Otra pregunta que tengo es si hay manera de resumir un poco el codigo de
esta funcion porque hacer un if por cada mes se me hace grande la funcion.
Desde ya gracias, y acepto todo tipo de sugerencias.-
_________________________________________________________________
Charla con tus amigos en línea mediante MSN Messenger:
http://messenger.latam.msn.com/