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

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: Sebastián Villalba <svillalba(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql
Date: 2013-11-07 16:32:51
Message-ID: CAN3Qy4oiFUN9aBA3np3Qs6NRPOGGwGz2L0sBNNKJmPpts4iJQQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message raul andrez gutierrez alejo 2013-11-07 16:55:53 Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Multiplicar intervalo de tiempo en función plpgsql
Previous Message Sebastián Villalba 2013-11-07 15:56:31 Multiplicar intervalo de tiempo en función plpgsql