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 TIMESTAMP

O PostgreSQL oferece suporte robusto para tipos de dados de data e hora, incluindo `TIMESTAMP SEM FUSO HORÁRIO`, que armazena data e hora sem um fuso horário. Esses recursos são essenciais para tarefas precisas de controle de tempo e manipulação de dados.

Uso

Os tipos e funções de dados de data e hora, como `TIMESTAMP WITHOUT TIME ZONE`, são usados quando você precisa armazenar dados precisos de data e hora ou realizar operações com esses dados. Eles são cruciais para aplicativos que requerem registro preciso de tempo, programação e análise de dados históricos.

sql
SELECT column_name
FROM table_name
WHERE timestamp_column = TIMESTAMP 'YYYY-MM-DD HH:MI:SS';

Nessa sintaxe, `TIMESTAMP 'YYYY-MM-DD HH:MI:SS'` é usado para definir uma data e hora específicas para comparar com as entradas em `timestamp_column`.

Exemplos

1. Uso básico de TIMESTAMP

sql
SELECT order_id
FROM orders
WHERE order_date = TIMESTAMP '2023-10-15 14:30:00';

Essa consulta seleciona pedidos da tabela `orders` em que a `order_date` corresponde ao carimbo de data/hora especificado.

2. Extração de partes de um TIMESTAMP

sql
SELECT EXTRACT(YEAR FROM order_date) AS order_year
FROM orders;

Aqui, a função `EXTRACT` recupera a parte do ano da coluna `order_date` para cada linha da tabela `orders`.

3. Cálculo de diferenças de datas

sql
SELECT order_id, delivery_date - order_date AS delivery_duration
FROM orders;

Este exemplo calcula a duração entre `order_date` e `delivery_date` para cada pedido e a retorna como `delivery_duration`.

4. Usando TIMESTAMP COM FUSO HORÁRIO

sql
SELECT order_id
FROM orders
WHERE order_date AT TIME ZONE 'UTC' = TIMESTAMP '2023-10-15 14:30:00';

Este exemplo demonstra como usar `TIMESTAMP WITH TIME ZONE` para levar em conta as diferenças de fuso horário, convertendo `order_date` em um fuso horário específico.

5. Truncando datas com DATE_TRUNC

sql
SELECT DATE_TRUNC('month', order_date) AS month_start
FROM orders;

Essa consulta usa a função `DATE_TRUNC` para truncar `order_date` para o início do mês de cada registro.

Dicas e práticas recomendadas

  • Use a precisão adequada. Considere o uso de `TIMESTAMP WITH TIME ZONE` se o aplicativo exigir que você conheça os fusos horários.
  • Colunas de registro de data e hora do índice. A indexação pode acelerar significativamente as consultas que envolvem comparações de carimbo de data/hora. No entanto, as estratégias de indexação podem variar de acordo com os padrões de consulta e devem ser avaliadas caso a caso.
  • Seja consistente com os formatos. Sempre use o mesmo formato de data e hora para evitar confusão e erros.
  • Utilize as funções de data com sabedoria. Funções como `AGE`, `NOW` e `DATE_TRUNC` podem simplificar cálculos complexos de datas.
  • Cuidado com o horário de verão. Quando você usa `TIMESTAMP WITH TIME ZONE`, o PostgreSQL lida com as alterações do horário de verão ajustando automaticamente a hora armazenada para manter a precisão.