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 EXTRACT

A função EXTRACT do PostgreSQL é usada para recuperar subcampos específicos, como ano, mês, dia, hora, etc., dos valores de data/hora. É essencial para a manipulação e análise de data e hora em consultas SQL.

Uso

A função EXTRACT é particularmente útil quando você precisa isolar uma parte específica de um valor de data/hora para fins de filtragem, agrupamento ou exibição. Sua sintaxe é simples:

EXTRACT(field FROM source)

Nessa sintaxe, field representa a parte da data/hora que você deseja extrair (por exemplo, YEAR, MONTH, DOW, DOY, EPOCH), e source é qualquer expressão que retorne um valor timestamp, date, interval, ou time, não apenas literais.

Exemplos

1. Ano de extração

SELECT EXTRACT(YEAR FROM '2023-10-14'::date) AS year;

Este exemplo extrai o ano 2023 da data especificada.

2. Extração de mês da data atual

SELECT EXTRACT(MONTH FROM CURRENT_DATE) AS month;

Aqui, a função EXTRACT recupera o mês atual da data do sistema.

3. Extração de hora do carimbo de data/hora

SELECT EXTRACT(HOUR FROM TIMESTAMP '2023-10-14 15:23:45') AS hour;

Este exemplo extrai a hora 15 do carimbo de data/hora fornecido.

4. Extração do dia da semana

SELECT EXTRACT(DOW FROM CURRENT_DATE) AS day_of_week;

Este exemplo recupera o dia da semana, em que domingo é 0 e sábado é 6.

5. Usando EXTRACT com GROUP BY

SELECT EXTRACT(YEAR FROM order_date) AS order_year, COUNT(*)
FROM orders
GROUP BY order_year;

Este exemplo agrupa os pedidos por ano, demonstrando o uso de EXTRACT com GROUP BY.

Dicas e práticas recomendadas

  • A precisão é importante. Verifique se o site source está no formato correto de data/hora para evitar erros ou resultados inesperados.
  • Combine com outras funções. Use EXTRACT com GROUP BY ou ORDER BY para organizar os resultados por intervalos de tempo.
  • Tenha em mente os fusos horários. Considere o contexto do fuso horário de seus dados para garantir uma extração precisa.
  • Verifique se há valores nulos. Trate os possíveis nulos em campos de data/hora usando COALESCE ou funções semelhantes para evitar falhas de consulta. Por exemplo:
SELECT EXTRACT(YEAR FROM COALESCE(order_date, CURRENT_DATE)) AS year;
  • Tipos de retorno. O EXTRACT retorna um valor de precisão dupla para todos os campos, exceto quando a fonte é um intervalo, em que ele retorna um número inteiro para campos como YEAR, MONTH, etc.
  • EXTRACT vs. DATE_PART. Ambas as funções têm finalidades semelhantes, mas DATE_PART é uma sintaxe de função mais tradicional no PostgreSQL. Escolha com base em convenções pessoais ou de projeto.