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 DATE_TRUNC

A função `DATE_TRUNC` no PostgreSQL é utilizada para truncar uma data ou um registro de data e hora para uma precisão específica, como hora, dia ou mês. É útil em cenários em que você precisa agregar dados em intervalos de tempo específicos.

Uso

A função `DATE_TRUNC` é utilizada quando você precisa alinhar datas e registros de data e hora a um determinado nível de precisão para análise ou relatório. Geralmente é usado em conjunto com funções agregadas para resumir dados em períodos de tempo definidos.

sql
DATE_TRUNC('precision', source_date)

Nessa sintaxe, `'precision'` especifica o nível em que a data será truncada (por exemplo, 'hour', 'day') e `source_date` é a data ou o carimbo de data/hora a ser truncado. A `source_date` pode ser uma coluna em uma tabela ou qualquer expressão que resulte em uma data ou carimbo de data/hora.

Opções de precisão

O PostgreSQL oferece suporte a vários níveis de precisão para truncamento, incluindo:

  • `second`
  • `minute`
  • `hour`
  • `day`
  • `week`
  • `month`
  • `quarter`
  • `year`
  • `decade`
  • `century`
  • `millennium`

Exemplos

1. Truncar para o dia

sql
SELECT DATE_TRUNC('day', TIMESTAMP '2023-10-04 15:23:45');

Este exemplo trunca o carimbo de data/hora para o início do dia, resultando em `2023-10-04 00:00:00`. Se a data de origem já estiver na precisão especificada, como `2023-10-04 00:00:00`, o resultado permanecerá inalterado.

2. Truncar para o mês

sql
SELECT DATE_TRUNC('month', TIMESTAMP '2023-10-04 15:23:45');

Aqui, o carimbo de data/hora é truncado até o início do mês, retornando `2023-10-01 00:00:00`.

3. Truncar para agregação

sql
SELECT DATE_TRUNC('week', order_date) AS week_start, COUNT(*)
FROM orders
GROUP BY week_start;

Este exemplo trunca `order_date` para o início de cada semana para agrupar os pedidos por intervalos semanais, fornecendo uma contagem de pedidos por semana.

Dicas e práticas recomendadas

  • Escolha a precisão correta. Selecione o nível de precisão que se alinha às suas necessidades de análise de dados, como "dia" para resumos diários ou "mês" para tendências mensais.
  • Combine com agregados. Use `DATE_TRUNC` com funções de agregação como `COUNT`, `SUM` ou `AVG` para realizar análises de dados baseadas em tempo.
  • Tenha em mente os fusos horários. Certifique-se de que os carimbos de data/hora estejam no fuso horário correto para evitar imprecisões ao truncar. Use `AT TIME ZONE` para o tratamento explícito do fuso horário, por exemplo, `DATE_TRUNC('day', timestamp_column AT TIME ZONE 'UTC')`.
  • Otimize o desempenho. A truncagem de grandes conjuntos de dados pode consumir muitos recursos; considere indexar suas colunas de data com um índice de árvore B para melhorar o desempenho da consulta.