Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql

From: raul andrez gutierrez alejo <raulandrez(at)gmail(dot)com>
To: Hellmuth Vargas <hivs77(at)gmail(dot)com>
Cc: Sebastián Villalba <svillalba(at)gmail(dot)com>, pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql
Date: 2013-11-07 16:55:53
Message-ID: CAHQFj70fTEvSSBmqdAzVH11_ooCD1p2T_SxF+2x3DfBqjLi5Fw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

creo que esto le puede servir, concatena texto, lo convierte a interval y
lo suma a una fecha.

select ('2013-11-07'::date + ('2'::text||' '::text||'DAY'::text)::interval )

El 7 de noviembre de 2013 11:32, Hellmuth Vargas <hivs77(at)gmail(dot)com>escribió:

>
> Hola lista
>
> Según creo interpretar, esta generando una sentencia SQL dinamicamente
> dentro del procedimiento, la sintaxis seria similar a esto:
>
>
>
>
> select $$ AND (fecha_inicio + (duracion * CAST('1 $$ || a.unidad_duracion
> || $$' as INTERVAL)) >= current_date) $$
> from (values('DAY'),('MONTH'),('WEEK'),('YEAR')) as a(unidad_duracion);
>
> al ejecutar, genera varias lineas con cada tipo de intervalo y ademas
> con la sintaxis requerida.
>
> AND (fecha_inicio + (duracion * CAST('1 DAY' as INTERVAL)) >=
> current_date)
> AND (fecha_inicio + (duracion * CAST('1 MONTH' as INTERVAL)) >=
> current_date)
> AND (fecha_inicio + (duracion * CAST('1 WEEK' as INTERVAL)) >=
> current_date)
> AND (fecha_inicio + (duracion * CAST('1 YEAR' as INTERVAL)) >=
> current_date)
>
>
>
>
>
>
>
>
>
>
>
> El 7 de noviembre de 2013 10:56, Sebastián Villalba<svillalba(at)gmail(dot)com>escribió:
>
> Hola. Tengo una tabla de cursos. Entre otros campos tengo:
>> [...]
>> fecha_inicio date,
>> duracion integer,
>> unidad_duracion varchar(6)
>> [...]
>>
>> "unidad_duracion" puede ser "months", "weeks", "years", etc. [0]
>>
>> La idea es calcular si ese curso terminó o no el día de hoy. Entonces
>> en la función tengo (entre otras cosas).
>>
>> WHERE....
>> AND (fecha_inicio + (duracion * interval ''1 '' || unidad_duracion
>> || '') >= current_date)...
>>
>> Pero no funciona. No sé cómo hacer para que dentro de comillas
>> simples, me ponga el valor del campo "months", "years", etc. en lugar
>> del string "unidad_duracion". Espero haber sido claro. Saludos!
>>
>> [0]:
>> http://www.postgresql.org/docs/9.1/static/datatype-datetime.html#DATATYPE-INTERVAL-ISO8601-UNITS
>>
>> --
>> Sebastián Villalba
>>
>> -
>> Enviado a la lista de correo pgsql-es-ayuda (
>> pgsql-es-ayuda(at)postgresql(dot)org)
>> Para cambiar tu suscripción:
>> http://www.postgresql.org/mailpref/pgsql-es-ayuda
>>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
> Esp. Telemática y Negocios por Internet
> Oracle Database 10g Administrator Certified Associate
> PostgreSQL DBA
>
>

--
Raul Andres Gutierrez Alejo

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Lazaro Ruben Garcia Martinez 2013-11-07 18:42:20 RE: mejor FS?
Previous Message Hellmuth Vargas 2013-11-07 16:32:51 Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql