> Tiene sentido usar "timestamp with time zone" cuando la aplicación es un
> tpv que van a usar unos cuantos usuarios todos dentro de la misma zona
> horaria? la verdad es q en la documentación de postgresql no he
> conseguido aclararme este punto. Yo he probado los dos tipos y me
> funcionan (bueno no he probado desde qt si puedo insertar una hora sin
> indicar la zona horaria pero por lo demás bien) pero si no voy a usar lo
> de las zonas, supongo que sera mas eficiente no manejar esa información,
> no? Un saludo.
No es cosa de eficiencia, porque el almacenamiento es el mismo. La
diferencia es qué se hace cuando el que lee el dato está en un huso
diferente del que escribe.
Lo que hace timestamptz (timestamp with time zone) es tomar el valor,
"rotarlo" a GMT, y almacenarlo en GMT. Luego al leer, se toma el valor
y se "rota" al huso horario actual y se muestra.
¿Qué significa eso? Que si yo estando en Valdivia (-0400) ingreso un
dato en este momento, y luego alguien en UK (+0000) lo lee un minuto más
tarde, el valor que le aparece va a tener sentido en su reloj local (es
decir, va a aparecer en su hora local menos un minuto). Si usas
timestamp, no ocurre ninguna de las marigüanzas de rotación horaria y el
compadre fácilmente podrá creer que el valor se ingresó cuatro horas más
tarde.
Es fácil pensar que "basta con usar timestamp, total no necesito los
husos horarios", pero en la práctica en algún momento necesitas hacer
las correcciones y cambiar en ese momento es un parto.
--
Alvaro Herrera
http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
--
TIP 6: ¿Has buscado en los archivos de nuestra lista de correo?
No comments:
Post a Comment