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

From: Luis D(dot) García <ldgarc(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Sumar TIMESTAMP + TIME desde el código fuente
Date: 2007-03-29 16:23:08
Message-ID: 3de424340703290923u7799b1f1m759ed1e1c0543d52@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Alvaro, modifiqué la función en vista de que los datos los tenía
como (CHAR *) para poder aplicar las funciones correspondientes, y
me quedó esto:
.
.
.
Datum time_stamp;
Datum freq;
Datum last_valid_time;

char *val;

freq = DirectFunctionCall3(interval_in,
CStringGetDatum((const char *)
get_rel_frequency_measure(relationId)),
ObjectIdGetDatum(InvalidOid),
Int32GetDatum(-1));

last_valid_time = DirectFunctionCall3(timestamp_in,
CStringGetDatum((const char *)
get_rel_last_valid_time(relationId)),
ObjectIdGetDatum(InvalidOid),
Int32GetDatum(-1));

val = DatumGetCString(DirectFunctionCall2( timestamp_pl_interval,
last_valid_time,
freq));

pfree(DatumGetPointer(last_valid_time));
pfree(DatumGetPointer(freq));
.
.
.

Ahora, las funciones get_rel_frequency_measure() y get_rel_last_valid_time()
,
son funciones que extraen los valores del interval y el timestamp
respectivamente,
los cuales están almacenados en el pg_class como (CHAR *). Ahora, al
cambiarlos
a forma interna por medio de las funciones timestamp_in e interval_in, los
valores
resultantes son vacíos (NULL), y por ende, el valor resultante de
timestamp_pl_interval
también.

Tienes alguna idea de por qué sucede esto???

Sé que anteriormente me recomendaste dos cosas:

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. Almacenar los valores como TIMESTAMP e INTERVAL directamente: hacer esto
me
llevaría a realizar una gran cantidad de cambios en funciones que ya
desarrollé en
los últimos meses, por lo cual me sería bastante complicado cambiar a estos
tipos
de datos.

2. Utilizar en vez de TIMESTAMP, TIMESTAMP_TZ: esto no puedo hacerlo para
estas
funciones, ya que por la definición con la cual estoy trabajando (de acuerdo
a los requerimientos
planteados) se estará trabajando con TIMESTAMP sin TIME ZONE.

Saludos, espero puedas ayudarme en esto...

--
Luis D. García M.

Telf: (+58) 2418662663
Cel.: (+58) 4143482018

- FACYT - UC -
- Computación -

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2007-03-29 16:54:16 Re: conexión a pg
Previous Message Marcos Renedo 2007-03-29 14:45:57 creacion de triggers