Usuário com melhor resposta
Dias atuais com função de dias uteis

Pergunta
-
Ola pessoal
Preciso de uma ajuda se for possivel:
Eu tenho uma função que calcula os dias uteis, preciso fazer um select que pega uma data de uma tabela e calcula alguns dias anteriores baseado na função de dias uteis, eu tentei fazer o comando mas esta dando erro:
Declare @DTLimite SmallDateTime
set @DtLimite = dbo.fn_DiaUtil
set dateformat dmy
select tblwrirecepcao.PK_Recepcao, tblwrirecepcao.DtRecep, tblWRIRecepcaoBloqueio.DataBloqueio,
(tblwrititulos.DtDevolucaoLimite = ((DtLimite, -3)) As Limite
from tblwrirecepcao
inner join tblWRIRecepcaoBloqueio on tblWRIRecepcaoBloqueio.FK_tblWRIRecepcaoRecepcao = tblwrirecepcao.PK_Recepcao
inner join tblwrititulos on tblwrititulos.FK_tblWRIRecepcaoRecepcao = tblwrirecepcao.PK_Recepcao
where tblWRIRecepcaoBloqueio.DataBloqueio = '02/07/2018'
Eu preciso que o campo DTDevolucaolimite calcule menos 3 dias, porem tem que ser em dias uteis
Respostas
-
Deleted
- Marcado como Resposta Tiago_Aurelio quarta-feira, 4 de julho de 2018 19:04
Todas as Respostas
-
-
-
/****** Object: UserDefinedFunction [dbo].[fn_DiaUtil] Script Date: 04/07/2018 10:35:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Object: User Defined Function dbo.fn_DiaUtil Script Date: 27/10/2015 10:06:59 ******/
/****** Object: User Defined Function dbo.fn_DiaUtil Script Date: 9/9/2015 23:09:08 ******/
/****** Object: User Defined Function dbo.fn_DiaUtil Script Date: 20/8/2015 10:57:36 ******/
/****** Object: User Defined Function dbo.fn_DiaUtil Script Date: 11/5/2015 11:55:03 ******/
/****** Object: User Defined Function dbo.fn_DiaUtil Script Date: 27/11/2014 20:04:49 ******/
ALTER Function [dbo].[fn_DiaUtil]
(
@Data SmallDateTime,
@NumeroDeDias int
)
Returns SmalldateTime
Begin
Set @Data = DateAdd(Day, @NumeroDeDias, @Data)
If ( @NumeroDeDias <> 0 )
Begin
If ( @NumeroDeDias < 0 )
Set @NumeroDeDias = -1
Else Set @NumeroDeDias = 1
End
Declare @FF int
Set @FF = 0
While (@FF = 0)
Begin
Select @FF = dbo.fn_VerificaDiaUtil(@Data)
If (@FF = 0)
Begin
If (@NumeroDeDias = 0)
Set @Data = (Select DateAdd(Day, 1, @Data) )
Else
Set @Data = (Select DateAdd(Day, @NumeroDeDias, @Data) )
End
End
Return @Data
End
-
-
Jose Muito obrigado pela ajuda,
Um ultimo detalhe se possivel, vou precisar montar uma procedure a partir do codigo abaixo,
precisei tambem inserir em uma tabela, porem a cada vez que rodo a procedure, o comando
duplica os dados, tem alguma forma de inserir apenas o que nao existe?declare @DF tinyint;
set @DF= @@datefirst;
set datefirst 7;
-- Dados --
Insert Cartorio_cheque_libera(
Protocolo,
Data_Bloqueio,
Registro_Devolucao,
Numero_Cheque,
Limite_Liberacao
)
--
SELECT distinct Rec.PK_Recepcao, RecB.DataBloqueio,
Tit.DtDevolucaoLimite as Registro_Devolucao, tblWRICaixaAutenticacao.NumeroCheque,
case datepart(dw, dateadd(day, -8, Tit.DtDevolucaoLimite))
when 1 then dateadd(day, -10, Tit.DtDevolucaoLimite) -- domingo
when 7 then dateadd(day, -8, Tit.DtDevolucaoLimite) -- sábado
else dateadd(day, -8, Tit.DtDevolucaoLimite)
end as Limite_Liberacao
from tblwrirecepcao as Rec
inner join tblWRIRecepcaoBloqueio as RecB on RecB.FK_tblWRIRecepcaoRecepcao = Rec.PK_Recepcao
inner join tblwrititulos as Tit on Tit.FK_tblWRIRecepcaoRecepcao = Rec.PK_Recepcao
inner join tblWRICaixaAutenticacao on tblWRICaixaAutenticacao.NumeroDocumento = rec.PK_Recepcao
where DataLiberacao is null
and tblWRICaixaAutenticacao.FK_tblWRICaixaFormaPagto_Id=2
order by Limite_Liberacao asc
--restaura datefirst
set datefirst @DF -
-
-
Deleted
- Marcado como Resposta Tiago_Aurelio quarta-feira, 4 de julho de 2018 19:04