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

PostgreSQL TIMESTAMPTZ

O `TIMESTAMPTZ` do PostgreSQL é um tipo de dados que armazena data e hora com informações de fuso horário. Ele é essencial para aplicativos que requerem uma marcação precisa da hora em diferentes fusos horários.

Uso

O tipo `TIMESTAMPTZ` é usado para armazenar dados de carimbo de data/hora que levam em conta as diferenças de fuso horário, garantindo a consistência em aplicativos sensíveis ao tempo. Ele é frequentemente utilizado em cenários que envolvem transações de dados globais e eventos de registro. Internamente, o `TIMESTAMPTZ` armazena todos os carimbos de data e hora em UTC e os converte de acordo com a configuração de fuso horário do cliente na recuperação, garantindo a consistência em diferentes regiões.

sql
CREATE TABLE event_logs (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(255),
    event_timestamp TIMESTAMPTZ
);

Nessa sintaxe, `event_timestamp TIMESTAMPTZ` armazena a hora exata do evento, incluindo o fuso horário.

Exemplos

1. Inserção básica de TIMESTAMPTZ

sql
INSERT INTO event_logs (event_name, event_timestamp)
VALUES ('System Update', '2023-10-25 14:30:00+00');

Este exemplo insere um evento com um registro de data e hora específico em UTC, incluindo informações de fuso horário UTC.

2. Recuperação do TIMESTAMPTZ atual

sql
SELECT NOW()::TIMESTAMPTZ AS current_time;

Aqui, a função `NOW()` obtém a data e a hora atuais, ajustadas automaticamente ao fuso horário do servidor, e as converte em `TIMESTAMPTZ`.

3. Conversão de TIMESTAMPTZ para outro fuso horário

sql
SELECT event_name, 
       event_timestamp AT TIME ZONE 'America/New_York' AS event_time_est
FROM event_logs;

Esse exemplo converte o `TIMESTAMPTZ` armazenado em Eastern Standard Time (EST) para fins de exibição e não altera o carimbo de data/hora armazenado.

Dicas e práticas recomendadas

  • Use o TIMESTAMPTZ para aplicativos globais. Ele garante a consistência do tempo em diferentes regiões.
  • Tenha em mente as conversões de fuso horário. Sempre especifique o fuso horário ao converter ou comparar registros de data e hora.
  • Aproveite as funções incorporadas. Use as funções do PostgreSQL, como `NOW()` ou `CURRENT_TIMESTAMP`, para obter um registro de data e hora dinâmico.
  • Tenha em mente a eficiência do armazenamento. Embora o `TIMESTAMPTZ` seja eficiente, garanta sua necessidade, pois ele pode consumir mais armazenamento do que o `TIMESTAMP` sem um fuso horário. Considere o uso de `TIMESTAMP` sem fuso horário para aplicativos localizados em que os fusos horários não são uma preocupação.
  • Defina corretamente o parâmetro de configuração `timezone` do servidor PostgreSQL. Isso garante o comportamento esperado das conversões de fuso horário e a recuperação precisa da hora.
  • Considere as mudanças no horário de verão (DST). O `TIMESTAMPTZ` se ajusta automaticamente ao horário de verão, o que é fundamental para aplicativos sensíveis a mudanças de horário. Verifique se as configurações de fuso horário do servidor tratam o horário de verão adequadamente.