Free cookie consent management tool by TermsFeed Policy Generator
  • SQL Server Video
  •    72 page views
  •   2222 video views
  • 2024, April 11, Thursday

#080 How to Count and Get Working Days in SQL Server

Como contar a quantidade de dias úteis existentes entre duas datas e obter uma lista dessas datas utilizando o SQL Server

Iremos conhecer as técnicas:

1. Declarar variáveis de tipo de dados data (DECLARE, DATETIME):

  • Para declarar uma variável de data, você pode usar a instrução DECLARE seguida do nome da variável e do tipo de dados, neste caso, DATETIME. Exemplo:
    DECLARE @DataExemplo DATETIME = '2023-01-01';
    

2. Contar dias entre datas (DATEDIFF, DAY):

  • A função DATEDIFF permite calcular a diferença entre duas datas em unidades específicas. Para contar dias, você pode usar DAY como unidade. Exemplo:
    SELECT DATEDIFF(DAY, '2023-01-01', '2023-01-10') AS DiasDeDiferenca;
    

3. Contar semanas entre datas (DATEDIFF, WEEK):

  • Similar ao exemplo anterior, mas usando WEEK como unidade. Exemplo:
    SELECT DATEDIFF(WEEK, '2023-01-01', '2023-01-31') AS SemanasDeDiferenca;
    

4. Contar dias em fim de semana incompleto (CASE, WHEN, DATENAME, SUNDAY, MONDAY):

  • Usando uma expressão CASE com WHEN e a função DATENAME para identificar o dia da semana, você pode contar os dias que são fins de semana incompletos. Exemplo:
    SELECT COUNT(*)
    FROM SuaTabela
    WHERE 
      (CASE 
         WHEN DATENAME(WEEKDAY, Data) = 'Sunday' THEN 1
         WHEN DATENAME(WEEKDAY, Data) = 'Monday' THEN 1
         ELSE 0
       END) = 1;
    

5. Hierarquia de datas em Expressão de Tabela Comum (CTE):

  • Uma expressão de tabela comum (CTE) pode ser usada para criar uma hierarquia de datas. Exemplo:
    WITH HierarquiaDeDatas AS (
      SELECT Data, 
             DATENAME(MONTH, Data) AS Mes,
             DATENAME(YEAR, Data) AS Ano
      FROM SuaTabela
    )
    SELECT * FROM HierarquiaDeDatas;
    

6. Filtrar registros por conjunto de valores (WHERE, NOT IN):

  • Para filtrar registros que não estão em um conjunto específico, você pode usar a cláusula NOT IN em conjunto com WHERE. Exemplo:
    SELECT * FROM SuaTabela
    WHERE CampoData NOT IN ('2023-01-01', '2023-02-01', '2023-03-01');

This content contains
  • Content Video
  • Language Portuguese
  • Duration 8m 14s
  • Subtitles Sim

  • Reading time 1 min 26 seg

avatar
Fabio Santos

Data Scientist and Consultant for Digital and Analytics Solutions


  • Share

Youtube Channel

@fabioms

Subscribe now