Método detalhado para calcular dias úteis considerando feriados no SQL

Este artigo explica como calcular dias úteis no SQL considerando feriados. No gerenciamento de cronogramas de negócios e na análise de dados, é importante entender com precisão os dias úteis. Este artigo abordará desde a definição básica de dias úteis, a forma de importar dados de feriados, até o processo de criação de consultas SQL para calcular dias úteis com exemplos práticos. Por fim, como exemplos aplicados úteis no trabalho, apresentaremos como calcular o número de dias úteis em um período específico e como determinar o próximo dia útil.

Índice

Definição de dias úteis e pontos a considerar

Dias úteis referem-se aos dias em que os negócios normais são realizados, excluindo finais de semana e feriados. Seguindo o calendário empresarial e considerando os feriados, é possível calcular os dias úteis com precisão. Isso é particularmente importante para prazos de projetos e ajustes de cronogramas de entregas. A seguir, explicaremos como preparar os dados de feriados necessários para calcular os dias úteis.

Preparação dos dados de feriados

Para importar dados de feriados em um banco de dados SQL, primeiro crie uma lista de feriados e salve-a como uma tabela no banco de dados. Abaixo estão os passos para isso.

Coleta de dados de feriados

Pesquise os feriados de cada país ou região e crie uma lista. Liste os feriados no formato a seguir.

2024-01-01, New Year's Day
2024-04-29, Showa Day
...

Criação da tabela de feriados

Crie uma tabela para armazenar os dados de feriados. Abaixo está um exemplo de consulta SQL para isso.

CREATE TABLE holidays (
    holiday_date DATE PRIMARY KEY,
    holiday_name VARCHAR(255)
);

Inserção de dados de feriados

Insira os dados de feriados coletados na tabela. Abaixo está um exemplo de consulta SQL para isso.

INSERT INTO holidays (holiday_date, holiday_name) VALUES
('2024-01-01', 'New Year's Day'),
('2024-04-29', 'Showa Day'),
...

Agora que os dados de feriados estão prontos, explicaremos como utilizá-los para calcular os dias úteis.

Consulta SQL para calcular dias úteis

Para calcular os dias úteis considerando os feriados, crie uma consulta SQL seguindo os passos abaixo.

Consulta básica para determinar dias úteis

Primeiro, crie uma consulta para determinar se uma data específica é um dia útil. Defina as condições para excluir finais de semana (sábado e domingo) e feriados.

SELECT 
    date,
    CASE 
        WHEN DAYOFWEEK(date) IN (1, 7) THEN 'Fim de semana'
        WHEN date IN (SELECT holiday_date FROM holidays) THEN 'Feriado'
        ELSE 'Dia útil'
    END AS day_type
FROM 
    your_date_table;

Consulta para calcular o número de dias úteis

Em seguida, crie uma consulta para calcular o número de dias úteis em um período específico. Aqui, você especifica a data de início e término e conta o número de dias úteis nesse período.

SELECT 
    COUNT(*) AS business_days
FROM 
    (SELECT 
        date
    FROM 
        your_date_table
    WHERE 
        date BETWEEN '2024-01-01' AND '2024-12-31'
        AND DAYOFWEEK(date) NOT IN (1, 7)
        AND date NOT IN (SELECT holiday_date FROM holidays)
    ) AS subquery;

Consulta para calcular o próximo dia útil

Crie uma consulta para calcular o próximo dia útil a partir de uma data especificada.

SELECT 
    MIN(date) AS next_business_day
FROM 
    your_date_table
WHERE 
    date > '2024-05-24'
    AND DAYOFWEEK(date) NOT IN (1, 7)
    AND date NOT IN (SELECT holiday_date FROM holidays);

Agora você pode calcular dias úteis considerando feriados. A seguir, apresentaremos como aplicar essas consultas a cenários específicos.

Exemplo aplicado: Calcular o número de dias úteis em um período específico

Calcular o número de dias úteis em um período específico permite planejar cronogramas de projetos e atividades de forma precisa. Abaixo está um exemplo de consulta prática.

Exemplo de consulta: Calcular o número de dias úteis em um mês específico

Por exemplo, crie uma consulta para calcular o número de dias úteis em maio de 2024.

SELECT 
    COUNT(*) AS business_days
FROM 
    (SELECT 
        date
    FROM 
        your_date_table
    WHERE 
        date BETWEEN '2024-05-01' AND '2024-05-31'
        AND DAYOFWEEK(date) NOT IN (1, 7)
        AND date NOT IN (SELECT holiday_date FROM holidays)
    ) AS subquery;

Exemplo de consulta: Calcular o número de dias úteis em uma semana específica

Por exemplo, crie uma consulta para calcular o número de dias úteis na primeira semana de maio de 2024 (de 1º a 7 de maio).

SELECT 
    COUNT(*) AS business_days
FROM 
    (SELECT 
        date
    FROM 
        your_date_table
    WHERE 
        date BETWEEN '2024-05-01' AND '2024-05-07'
        AND DAYOFWEEK(date) NOT IN (1, 7)
        AND date NOT IN (SELECT holiday_date FROM holidays)
    ) AS subquery;

Explicação da consulta

Essa consulta seleciona as datas dentro do período especificado, excluindo finais de semana (sábado e domingo) e feriados, para contar o número de dias úteis. Isso permite obter o número exato de dias úteis em um período específico.

Assim, é fácil calcular o número de dias úteis em um período específico utilizando consultas SQL. Em seguida, apresentaremos como calcular o próximo dia útil a partir da data atual.

Exemplo aplicado: Calcular o próximo dia útil

Calcular o próximo dia útil a partir da data atual é útil para verificar prazos e planejar atividades de trabalho. Abaixo está uma consulta SQL para determinar o próximo dia útil.

Consulta para calcular o próximo dia útil

Por exemplo, suponha que a data atual seja 24 de maio de 2024 e crie uma consulta para calcular o próximo dia útil.

SELECT 
    MIN(date) AS next_business_day
FROM 
    your_date_table
WHERE 
    date > '2024-05-24'
    AND DAYOFWEEK(date) NOT IN (1, 7)
    AND date NOT IN (SELECT holiday_date FROM holidays);

Explicação da consulta

  1. MIN(date) AS next_business_day:
  • Obtém a data mínima que atende às condições, ou seja, o próximo dia útil.
  1. WHERE date > '2024-05-24':
  • Seleciona as datas posteriores à data atual.
  1. AND DAYOFWEEK(date) NOT IN (1, 7):
  • Exclui domingos (1) e sábados (7).
  1. AND date NOT IN (SELECT holiday_date FROM holidays):
  • Exclui feriados.

Exemplo prático: Calcular o próximo dia útil

Por exemplo, se 24 de maio de 2024 for uma sexta-feira e a segunda-feira seguinte, 27 de maio de 2024, não for feriado, essa consulta retornará 27 de maio de 2024 como o próximo dia útil.

Utilizando esta consulta, é possível realizar o agendamento de processos de trabalho de maneira eficiente. Assim concluímos a explicação sobre como calcular dias úteis considerando feriados. A seguir, faremos um resumo do artigo.

Resumo

Explicamos como calcular dias úteis considerando feriados no SQL. Desde a definição de dias úteis, a preparação de dados de feriados, a criação de consultas SQL específicas e exemplos aplicados como calcular o número de dias úteis em um período específico e determinar o próximo dia útil. Ao utilizar essas técnicas, é possível aumentar a precisão no gerenciamento de cronogramas de negócios e na análise de dados. Refletindo corretamente os feriados, é possível obter dados mais realistas e práticos. Aproveite essas técnicas no seu trabalho.

Índice