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
ouORDER 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.