Você sempre obtenha os
same data in browser client as the db original value
. Há apenas muitas maneiras diferentes de exibir o mesmo ponto no tempo (em diferentes fusos horários). Dois exemplos (representações de texto de um timestamptz
valor):'2012-03-05 20:00:00+03'
'2012-03-05 18:00:00+01'
Mesmo valor .
No que diz respeito ao Postgres, a configuração de fuso horário do servidor é completamente irrelevante para isso. A única coisa relevante é a configuração da sessão. E a única coisa que muda é a exibição do valor. É sempre o mesmo ponto no tempo.
Então, basta definir o fuso horário em sua sessão para obter a representação de texto correspondente:
- Definir fuso horário da instância do PostgreSQL
- Despejar e restaurar PostgreSQL em fuso horário diferente
- Definir o fuso horário da coluna timestamp no PostgreSQL
Outra opção seria o
AT TIME ZONE
construir. Para obter um timestamp
como local timestamp without time zone
:SELECT my_timestamptz_column AT TIME ZONE '-8';
Ao lidar com uma
table that contains a column of timezone type
, essa pode ser a melhor abordagem, pois o fuso horário pode mudar para cada linha. Novamente, tudo isso está na resposta de referência: