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-18 00:19:57
Message-ID: 20070318001957.GB12620@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Luis D. García escribió:
> Que tal, les escribo en esta ocasión debido a que necesito hacer una
> validación
> de los datos entrantes (VALUES... en el INSERT-Stmt) la cual se basa en la
> suma de un dato TIMESTAMP y uno de tipo TIME.

Justo por estos dias escribi este trozo de codigo para las mejoras de
autovacuum. Aca la formula que se esta ejecutando es

'1 second' * (1.0 * autovacuum_naptime) + now

donde autovacuum_naptime es un tiempo en segundos y now es un TimestampTz.

now = GetCurrentTimestamp();

if (avdb->ad_datid == dbid)
{
Datum onesec;
Datum naptime_secs;

/*
* add autovacuum_naptime seconds to the current time,
* and use that as the new "next_worker" field for this
* database.
* XXX is there a cleaner way to add a number of seconds
* to a TimestampTz?
*/
onesec = DirectFunctionCall3(interval_in,
CStringGetDatum("1 second"),
ObjectIdGetDatum(InvalidOid),
Int32GetDatum(-1));
naptime_secs =
DirectFunctionCall2(interval_mul,
onesec,
Float8GetDatum(1.0 * autovacuum_naptime));

avdb->ad_next_worker =
DatumGetTimestampTz(DirectFunctionCall2(timestamptz_pl_interval,
TimestampTzGetDatum(now),
naptime_secs));

pfree(DatumGetPointer(onesec));
pfree(DatumGetPointer(naptime_secs));

DLMoveToFront(elem);
break;
}

--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Julio Cesar Sánchez González 2007-03-18 07:27:58 Re: Mostrar caracteres acentuados en PHP
Previous Message Alvaro Herrera 2007-03-18 00:15:47 Re: manual d psql