Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

Conversões de fuso horário do PostgreSQL

As funções de data do PostgreSQL são usadas para manipular e recuperar valores de data e hora, incluindo a conversão entre fusos horários. Essas funções são essenciais para aplicativos que exigem o tratamento consistente de data e hora em diferentes regiões geográficas.

Uso

As funções de data no PostgreSQL são usadas para realizar operações em valores de data e hora, como a conversão de registros de data e hora de um fuso horário para outro para representações precisas de tempo. A sintaxe para conversão de fusos horários normalmente envolve a construção AT TIME ZONE.

timestamp AT TIME ZONE timezone;

Nessa sintaxe, um timestamp é convertido no timezone especificado, permitindo o ajuste dos dados de data e hora para refletir diferentes configurações regionais.

Exemplos

1. Conversão básica de fuso horário

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'UTC';

Este exemplo converte o registro de data e hora fornecido de UTC para o fuso horário local do servidor. Observe que a configuração do fuso horário atual do servidor afeta o resultado, portanto, é necessário que você conheça essa configuração para entender o resultado.

2. Conversão de horário com um fuso horário específico

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'America/New_York';

Aqui, o registro de data e hora é convertido para o fuso horário do leste dos EUA (America/New_York). O carimbo de data/hora resultante será ajustado para refletir esse fuso horário específico.

3. Conversão e exibição de ajustes de fuso horário

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'UTC' AT TIME ZONE 'Asia/Tokyo';

Este exemplo primeiro converte um carimbo de data/hora UTC para a hora local do servidor e, em seguida, para o fuso horário Asia/Tokyo. Isso mostra como um carimbo de data/hora pode ser deslocado em vários fusos horários.

4. Como lidar com as mudanças no horário de verão

SELECT '2023-03-12 01:30:00'::timestamptz AT TIME ZONE 'America/New_York';

Esse exemplo demonstra como o PostgreSQL se ajusta automaticamente às mudanças do horário de verão, o que é crucial quando é necessária uma representação precisa do horário durante essas transições.

Dicas e práticas recomendadas

  • Use tipos de dados sensíveis ao fuso horário. Prefira usar timestamptz em vez de timestamp para armazenar informações de fuso horário. O tipo timestamptz lida automaticamente com conversões de fuso horário e alterações no horário de verão, enquanto o timestamp não retém informações de fuso horário.
  • Seja explícito com relação aos fusos horários. Sempre especifique o fuso horário ao converter horários para evitar ambiguidade.
  • Considere o horário de verão. Esteja atento às alterações do horário de verão ao trabalhar com fusos horários para garantir cálculos de tempo precisos.
  • Aproveite o banco de dados de fuso horário do PostgreSQL. Use o suporte abrangente a fuso horário do PostgreSQL para fazer conversões precisas.
  • Teste com valores conhecidos. Valide as conversões usando diferenças de horário conhecidas para garantir a precisão.