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 -
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 |