Re: [Pgsql-ayuda] a?os bisiestos........

From: Alvaro Herrera Munoz <alvherre(at)dcc(dot)uchile(dot)cl>
To: GUSTAVO MARTIN OCAMPO <gocampo79(at)hotmail(dot)com>
Cc: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] a?os bisiestos........
Date: 2003-12-10 17:09:24
Message-ID: 20031210170924.GA24511@dcc.uchile.cl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Wed, Dec 10, 2003 at 03:59:13PM +0000, GUSTAVO MARTIN OCAMPO wrote:
> Hola lista, tengo una funcion de la forma.......

Mal. La funcion debe aceptar ao y mes como datos numericos,
no el texto del nombre. Despues te puedes hacer una envoltura que
tome el texto y lo convierta en el numero, pero eso es un paso posterior.
(if mes ilike ''febrero'' return 2, etc)

Segundo, hacer un IF para cada mes es mal estilo. Usa una variable para
construir las condiciones que pondras en el where:

inicio := anio || ''-'' || mes || ''-01'';
fin := anio || ''-'' || mes || ultimoDia(anio, mes);

y luego haces un solo select, usando eso en la clausula BETWEEN.

La funcion ultimoDia() debe retornar el ultimo dia para cada mes ignorando
el ao tomando en cuenta bisiestos. Un pequeo hint, los aos son bisiestos
si se cumple esta condicion:

regression=> \set year 2004
regression=> select (:year % 4 = 0) <> (:year % 100 = 0) <> (:year % 400 = 0);
?column?
----------
t

Suerte,

--
Alvaro Herrera (<alvherre[(at)]dcc(dot)uchile(dot)cl>)
"Pido que me den el Nobel por razones humanitarias" (Nicanor Parra)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message ligia placido 2003-12-10 17:26:09 [Pgsql-ayuda] unsuscribe
Previous Message Antonio Castro 2003-12-10 16:57:33 Re: [Pgsql-ayuda] Migracion del esquema de bases de datos