Lennin Caro escribió:

--- On *Thu, 11/19/09, Carlos Agustín López Avila /<cagusti...@gmail.com>/* wrote:


    From: Carlos Agustín López Avila <cagusti...@gmail.com>
    Subject: Re: [pgsql-es-ayuda] Incrementar campo de tipo date.
    To: "PostgreSQL" <pgsql-es-ayuda@postgresql.org>
    Date: Thursday, November 19, 2009, 4:01 AM

    Lennin Caro escribió:
    > --- On *Thu, 11/19/09, Carlos Agustín López Avila
    > /<cagusti...@gmail.com </mc/compose?to=cagusti...@gmail.com>>/*
    wrote:
    >
    >
    >     From: Carlos Agustín López Avila <cagusti...@gmail.com
    </mc/compose?to=cagusti...@gmail.com>>
    >     Subject: Re: [pgsql-es-ayuda] Incrementar campo de tipo date.
    >     To: "PostgreSQL" <pgsql-es-ayuda@postgresql.org
    </mc/compose?to=pgsql-es-ay...@postgresql.org>>
    >     Date: Thursday, November 19, 2009, 3:01 AM
    >
    >     Lennin Caro escribió:
    >     >
    >     > --- On *Thu, 11/19/09, Carlos Agustín López Avila
    >     > /<cagusti...@gmail.com
    </mc/compose?to=cagusti...@gmail.com>
    </mc/compose?to=cagusti...@gmail.com
    </mc/compose?to=cagusti...@gmail.com>>>/*
    >     wrote:
    >     >
    >     >
    >     >     From: Carlos Agustín López Avila <cagusti...@gmail.com
    </mc/compose?to=cagusti...@gmail.com>
    >     </mc/compose?to=cagusti...@gmail.com
    </mc/compose?to=cagusti...@gmail.com>>>
    >     >     Subject: [pgsql-es-ayuda] Incrementar campo de tipo date.
    >     >     To: "PostgreSQL" <pgsql-es-ayuda@postgresql.org
    </mc/compose?to=pgsql-es-ay...@postgresql.org>
    >     </mc/compose?to=pgsql-es-ay...@postgresql.org
    </mc/compose?to=pgsql-es-ay...@postgresql.org>>>
    >     >     Date: Thursday, November 19, 2009, 2:23 AM
    >     >
    >     >     Buena noches a todos.
    >     >     Necesito incrementar un campo de tipo date con cantidades
    >     >     numericas que representan años, meses y dias. ejemplo
    >     >     select fecha + 10 años + 2 meses + 4 dias from tabla;
    >     >
    >     >     Gracias.
    >     >
    >     >     -----Inline Attachment Follows-----
    >     >
    >     >     --
    >     >     TIP 5: ¿Has leído nuestro extenso FAQ?
    >     >              http://www.postgresql.org/docs/faqs.FAQ.html
    >     >
    >     >
    >     > con esto puedes incrementar un mes
    >     >
    >     > select current_date + interval '1 months'
    >     >
    >     > mas referncias
    >     >
    >     >
> http://www.postgresql.org/docs/8.3/interactive/functions-datetime.html
    >     >
    >     >
    >     Perdón pero creo que expuse mal la pregunta.
    >     Tengo una entidad con esta definición
    >     create table pato (
    >         fecha date,
    >         anios int2,
    >         mese int2,
    >         dias int2
    >     );
    >     y lo que necesito es algo como esto
    >     select fecha + anios + meses + dias;
    >
    >     Muchas gracias por su apoyo.
    >
    >
    >
    >     -----Inline Attachment Follows-----
    >
    >     --
    >     TIP 10: no uses HTML en tu pregunta, seguro que quien
    responda no
    >     podrá leerlo
    >
    >
    >
    >
    > Esto me funciono
    >
    > tabla
    > CREATE TABLE prueba
    > (
    >   id integer NOT NULL,
    >   fecha date,
    >   anio integer,
    >   mes integer,
    >   dia integer,
    >   CONSTRAINT prueba_pkey PRIMARY KEY (id)
    > )
    >
    > funcion
    > CREATE OR REPLACE FUNCTION dateadd2(integer, integer, integer,
    > inputdate date)
    >   RETURNS date AS
    > $BODY$
    > DECLARE
    >        strq varchar;
    >        dateTemp Date;
    >        dprec RECORD;
    > BEGIN
    >   strq:='select current_date + interval '''|| $1 || ' year'' +
    > interval '''|| $2 || ' month'' + interval '''|| $3 || ' day'' as
    fecha' ;
    >   FOR dprec IN EXECUTE strq LOOP
    >      dateTemp := dprec.fecha;
    >   END LOOP;
    >   RETURN dateTemp;
    > END;
    > $BODY$
    >   LANGUAGE 'plpgsql' VOLATILE
    >
    > llamada
    > select dateadd2(anio,mes,dia,fecha) from prueba
    >
    >
    Muchas, pero muchas gracias.

a la orden
comenta si e funciono


Siguiendo a Lennin así me quedo:
create table pato (
fecha date,
anios int2,
meses int2,
dias int2
);
insert into pato (date('2009-12-31'), 1, 2,3);
select * from pato
where (fecha + (anios || ' years')::interval + (meses || ' month')::interval + (dias || ' days')::interval) < current_date
from tabla;

Nuevamente gracias.

<<attachment: cagustinla.vcf>>

--
TIP 1: para suscribirte y desuscribirte, visita 
http://archives.postgresql.org/pgsql-es-ayuda

Responder a