Jump to content

Waldeilton

Members
  • Content count

    1
  • Joined

  • Last visited

Community Reputation

0 Comum

1 Follower

About Waldeilton

  1. Waldeilton

    Calcular diferença de datas em dias uteis?

    Criei uma função para calcular dias uteis entre duas datas informadas...Vale ressaltar que é necessária a criação da base de feriados (tbl_feriados).-- Cria função para calcular dias úteis entre duas datas informadasIF exists (SELECT * FROM dbo.sysobjects WHERE ID = object_id(N'[dbo].[fcnDiasUteis]'))DROP FUNCTION [dbo].[fcnDiasUteis]GOCREATE FUNCTION fcnDiasUteis (@DataInicial datetime, @DataFinal datetime)RETURNS intASBEGIN -- Cria variaveis DECLARE @Feriados int, @Retorno int, @DiasAUX int, @DataAUX datetime -- Seta primeiro dia da semana em domingo --SET DATEFIRST 7 -- Monta cursor DECLARE CursorFeriado CURSOR FOR SELECT count(*) 'Total' FROM tbl_Feriados WHERE dat_Feriado between @DataInicial + 1 AND @DataFinal AND DATEPART(dw, dat_Feriado) not in (1, 7) -- Abre cursor OPEN CursorFeriado -- Pega primeiro FETCH NEXT FROM CursorFeriado INTO @Feriados -- Seta dias úteis como 0 SET @Retorno = DateDiff(d, @DataInicial, @DataFinal) -- Seta data auxiliar para cálculos SET @DataAUX = @DataFinal -- Contabiliza dias úteis WHILE @DataInicial <= @DataAUX BEGIN -- Se for final de semana, desconsidera do total IF DATEPART(dw, @DataAUX) in (1, 7) BEGIN SET @Retorno = @Retorno - 1 END -- Subtrai um da data auxiliar SET @DataAUX = @DataAUX - 1 END -- Corrige caso data inicial seja um FDS IF DATEPART(dw, @DataInicial) in (1, 7) BEGIN SET @Retorno = @Retorno + 1 END -- Fecha cursor CLOSE CursorFeriado DEALLOCATE CursorFeriado -- Desconsidera os feriados SET @Retorno = @Retorno - @Feriados RETURN(@RETORNO)END
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.