Re: Timestamp como primary key

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Jorge Romeo <jromeo(at)samca(dot)com>
Cc: Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Timestamp como primary key
Date: 2009-05-27 13:38:59
Message-ID: 20090527133859.GU32650@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Jorge Romeo escribió:
> Pues no había caído en eso. En el sistema actual dan problemas, que se solucionan
> "a mano" pero en este caso se perderían hasta dos horas de datos, pues la
> inserción daría error...
>
> Se me ocurre que podría introducir la hora UTC, que no cambia. Luego tendría
> que tenerlo en cuenta en las aplicaciones que usen los datos.
>
> ¿Qué me sugieres? Estoy empezando y aun no me había
> encontrado con este problema.

Mi sugerencia es que uses el tipo timestamp with time zone (también
conocido como timestamptz)

Lo que hace este tipo es "rotar" la hora actual a UTC según el huso
horario actual (TimeZone), y guardar en UTC. Al extraer, "rota" desde
UTC hasta el huso horario que corresponde para esa fecha/hora y al
TimeZone que está en vigor. Es decir, si ingresas algo en +1 y luego lo
mira un cliente que está en +5, van a obtener la misma hora pero cada
uno en su propio huso horario.

Lo otro es que la aritmética funciona correctamente, o sea si restas dos
timestamptz obtienes la cantidad "real" de horas que transcurrieron.

--
Alvaro Herrera Developer, http://www.PostgreSQL.org/
"It takes less than 2 seconds to get to 78% complete; that's a good sign.
A few seconds later it's at 90%, but it seems to have stuck there. Did
somebody make percentages logarithmic while I wasn't looking?"
http://smylers.hates-software.com/2005/09/08/1995c749.html

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jorge Romeo 2009-05-27 13:47:00 RE: Timestamp como primary key
Previous Message Jorge Romeo 2009-05-27 13:33:35 RE: Timestamp como primary key