Introdução
Ao trabalhar com bancos de dados SQL, incluindo o PostgreSQL, manipular e consultar dados de data e hora é uma habilidade fundamental. Muitas vezes, as aplicações exigem análises ou relatórios focados em dias úteis, excluindo os fins de semana. Este tutorial mostra como selecionar registros apenas de dias úteis usando as funções de data e hora do PostgreSQL.
Entendendo data e hora no PostgreSQL
O PostgreSQL oferece um conjunto abrangente de funções e operadores para trabalhar com datas e horas, o que facilita a execução de consultas complexas, como selecionar linhas com base em dias úteis.
Tipos de dados de data/hora
Antes de consultar dias úteis, é útil conhecer os principais tipos de dados de data/hora do PostgreSQL:
-
DATE: para datas (ano, mês, dia). -
TIMESTAMP: para data e hora, sem fuso horário. -
TIMESTAMPTZ: para data e hora, com fuso horário. -
TIME: apenas para hora, sem fuso horário. -
TIMETZ: apenas para hora, com fuso horário.
A função EXTRACT
Uma função essencial para trabalhar com dias úteis é a EXTRACT. Ela permite extrair partes de um valor de data/hora, como o dia da semana.
Consultando apenas dias úteis
Para selecionar registros que caem em dias úteis (de segunda a sexta), você pode usar a função EXTRACT para obter o dia da semana de uma data, em que domingo é 0 e sábado é 6.
Seleção básica de dias úteis
Veja como filtrar as linhas para incluir apenas dias úteis:
-- Assuming a table 'events' with a 'date' column
SELECT *
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5;
Esta consulta seleciona linhas da tabela events em que o dia da semana da coluna date está entre 1 (segunda) e 5 (sexta), inclusive.
Resultado:
| id | date | event_name |
|---|---|---|
| 1 | 2024-03-04 | Lançamento do projeto |
| 2 | 2024-03-05 | Reunião da equipe |
Cenários complexos: juntando tabelas e filtrando por dias úteis
Vamos considerar um exemplo mais complexo, em que você precisa juntar tabelas e ainda filtrar por dias úteis.
-- Assuming another table 'event_details' that references 'events'
SELECT e.*, ed.detail
FROM events e
JOIN event_details ed ON e.id = ed.event_id
WHERE EXTRACT(DOW FROM e.date) BETWEEN 1 AND 5;
Esta consulta não só filtra os eventos por dias úteis, como também faz um join com a tabela event_details para buscar dados relacionados.
Resultado:
| id | date | event_name | detail |
|---|---|---|---|
| 1 | 2024-03-04 | Lançamento do projeto | Reunião de kick-off |
| 2 | 2024-03-05 | Reunião da equipe | Revisão mensal |
Casos de uso
Analisando horas de trabalho
Para empresas que registram horas de trabalho, excluir os fins de semana pode trazer insights sobre produtividade e custos de mão de obra.
-- Assuming a table 'work_hours' with 'employee_id', 'date', and 'hours_worked'
SELECT employee_id, SUM(hours_worked) AS total_hours
FROM work_hours
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
GROUP BY employee_id;
Esta consulta calcula o total de horas trabalhadas por cada funcionário em dias úteis.
Resultado:
| employee_id | total_hours |
|---|---|
| 101 | 40 |
| 102 | 38 |
Planejamento de eventos
Para quem planeja eventos, focar nos dias úteis pode ajudar a organizar e agendar eventos com mais eficiência.
-- Finding available event dates during weekdays
SELECT date
FROM events
WHERE EXTRACT(DOW FROM date) BETWEEN 1 AND 5
AND date > CURRENT_DATE
ORDER BY date;
Isso ajuda a identificar as próximas datas em dias úteis para planejar eventos futuros.
Resultado:
| date |
|---|
| 2024-03-06 |
| 2024-03-07 |
Conclusão
Selecionar registros com base em dias úteis no PostgreSQL é uma técnica útil para análise de dados e lógica de aplicação. Aproveitando as funções de data e hora do PostgreSQL, especialmente a EXTRACT, você pode filtrar dados facilmente para atender às suas necessidades. Seja analisando operações de negócio, planejando eventos ou simplesmente gerenciando agendas, saber consultar dias úteis vai ampliar suas habilidades com bancos de dados.
Pratique com estes exemplos, explore a documentação do PostgreSQL para conhecer mais funções de data/hora e extraia mais insights dos seus dados.
Boas consultas!
Beekeeper Studio é um cliente de banco de dados gratuito e open source
A melhor ferramenta de consultas e edição de SQL que já usei. Tem tudo o que preciso para gerenciar meu banco de dados. - ⭐⭐⭐⭐⭐ Mit
O Beekeeper Studio é rápido, intuitivo e fácil de usar. Ele suporta vários bancos de dados e funciona muito bem no Windows, Mac e Linux.
O que os usuários dizem sobre o Beekeeper Studio
"O Beekeeper Studio substituiu completamente meu antigo fluxo de trabalho com SQL. É rápido, intuitivo e torna o trabalho com bancos de dados agradável de novo."
"Já testei muitas GUIs de banco de dados, mas o Beekeeper encontra o equilíbrio perfeito entre recursos e simplicidade. Simplesmente funciona."