without with postgres example date_part cast postgresql timezone

with - PostgreSQL altera la marca de tiempo tipo sin zona horaria-> con zona horaria



timestamp postgresql example (2)

La pregunta es breve: si ya tengo datos en una columna escriba timestamp sin zona horaria, si configuro el tipo de marca de tiempo con zona horaria, ¿qué hace postgresql con estos datos?


Es mejor especificar el huso horario explícitamente. Digamos, si su marca de tiempo se supone que está en UTC (pero sin zona horaria), debe tener cuidado con el hecho de que la zona horaria del cliente o servidor podría estar jugando todo aquí. En cambio escribe:

ALTER TABLE a ALTER COLUMN t TYPE TIMESTAMP WITH TIME ZONE USING t AT TIME ZONE ''UTC''


Mantiene el valor actual en localtime y establece la zona horaria en el desplazamiento de su tiempo local:

create table a(t timestamp without time zone, t2 timestamp with time zone); insert into a(t) values (''2012-03-01''::timestamp); update a set t2 = t; select * from a; t | t2 ---------------------+------------------------ 2012-03-01 00:00:00 | 2012-03-01 00:00:00-08 alter table a alter column t type timestamp with time zone; select * from a; t | t2 ------------------------+------------------------ 2012-03-01 00:00:00-08 | 2012-03-01 00:00:00-08

De acuerdo con el manual para Alter Table :

si [se omite la cláusula USING] , la conversión predeterminada es la misma que la conversión de asignación del tipo de datos antiguo a nuevo.

De acuerdo con el manual de tipos Fecha / Hora

Las conversiones entre la marca de tiempo sin zona horaria y la marca de tiempo con zona horaria normalmente suponen que la marca de tiempo sin valor de zona horaria debe tomarse o darse como hora local de la zona horaria. Se puede especificar un huso horario diferente para la conversión utilizando AT TIME ZONE .