Re: Sumar TIMESTAMP + TIME desde el código fuente

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Luis D(dot) García <ldgarc(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Sumar TIMESTAMP + TIME desde el código fuente
Date: 2007-03-20 12:57:55
Message-ID: 20070320125755.GP24234@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Luis D. García escribió:
> Hola de nuevo Alvaro, tengo una duda, ya que estuve trabajando y analizando
> un poco el código que me diste y no he podido obtener el resultado
> esperado.
>
> Pienso que el problema puede estar en que los valores tanto del TIME, como
> del TIMESTAMP los tengo almacenados como strings (CHAR *) y hasta ahora
> no he podido realizar las conversiones adecuadas con la función
> text_timestamp
> para convertir esta cadena al tipo de dato TIMESTAMP respectivo.

Esto obviamente no va a funcionar. Ademas, usar "char *" creo que es un
poco torpe. Considera usar el tipo TimestampTz para guardar el
timestamp. Ademas, si lo que quieres hacer con el TIME es sumarselo a
un TIMESTAMP, entonces es mala idea usar TIME; debes usar Interval.
Para almacenarlo, usa el tipo Interval (en C).

> '1 second' * (1.0 * autovacuum_naptime)
>
> Ya que según como lo entendí lo que haces es convertir el tipo de dato
> TIME en un INTERVAL para luego poder usar la función
> timestamptz_pl_interval, es esto correcto?

No, lo que hago es tomar un Interval de 1 segundo y multiplicarlo por un
float (escalar). Esto me da como resultado un Interval de
autovacuum_naptime segundos. El (1.0 * foo) es para obtener el float,
porque autovacuum_naptime es una variable de tipo entera.

> A partir de esto, y basándome en tú código, en mi caso el código quedó
> así, pero al compilarlo me da algunos problemas los cuales como te
> mencioné pienso tienen que ver con el que tanto el TIME como el
> TIMESTAMP son *char:

Obvio. Cambia eso.

> PD: otra duda que tenía es ¿ese tiempo autovacuum_naptime también puede
> poseer los respectivos valores de Hora, Minutos y Decimales no? Ej: 02:05:
> 03.456

Bueno, en el caso de autovacuum_naptime, es solo un integer, asi que no
los almacena. Pero tu puedes guardar tu valor como un Interval y te
ahorras ese problema (te guarda decimales y todo, etc).

BTW, acabo de encontrar una macro en timestamp.h que se llama
TimestampTzPlusMilliseconds que te puede servir (al menos yo la voy a
usar en el codigo de autacuum).

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Mario 2007-03-20 13:03:34 Re: Sumar TIMESTAMP + TIME desde el código fuente
Previous Message Ricardo Martin Gomez 2007-03-20 12:57:41 Postgres + Slony-I