Usuário com melhor resposta
DIAS UTEIS - FUNÇÃO

Pergunta
-
Pessoal bom dia
Eu estou precisando fazer um update em um campo de uma tabela de data, que faça o seguinte:
Atualize o campo baseado em um outro campo de data, com 30 dias uteis, mas tenho uma função que ja faz os dias uteis.
Exemplo:
update tblWRITitulos Set DtDevolucaoLimite = (dbo.fn_DiaUtil) + (tblWRIRecepcao.DtRecep + 30)
from tblWRITitulos
inner join tblWRIRecepcao on tblWRIRecepcao.PK_Recepcao = tblWRITitulos.FK_tblWRIRecepcaoRecepcao
where tblWRITitulos.FK_tblWRIRecepcaoRecepcao = 562135O numero 30 é a quantidade de dias,
Bom eu nao consegui fazer isso, pois o comando acima esta errado, como eu poderia fazer?
Obrigado
Respostas
-
Boa tarde,
Considerando que existem 2 parâmetros de entrada na sua função, respectivamente a data e a quantidade de dias, e que o retorno seja uma data, experimente mais ou menos dessa forma:
Set DtDevolucaoLimite = dbo.fn_DiaUtil(tblWRIRecepcao.DtRecep, 30)
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ quarta-feira, 12 de agosto de 2015 20:43
Todas as Respostas
-
Bom dia LFernando,
Não sei se pode ajudar, mas eu tenho uma função que adiciona dias uteis a uma data, mas a minha função, só conta os sábados e domingos. Se precisar contar os feriados, aconselho a você a criar uma tabela contendo as datas dos feriados e alterar a função para ignorar essas datas.
Segue a função e o uso.
ALTER FUNCTION addDiasUteis (@data DATE, @diasUteis INT) RETURNS DATE AS BEGIN DECLARE @diasCorridos INT = 0; DECLARE @i INT = 0 WHILE (@i < @diasUteis) BEGIN SET @diasCorridos = @diasCorridos + 1 IF (DATEPART(WEEKDAY, DATEADD(DAY, @diasCorridos, @data)) NOT IN (1,7)) SET @i = @i + 1 END RETURN DATEADD(DAY, @diasCorridos, GETDATE()) END GO SELECT dbo.addDiasUteis(GETDATE(), 6) --ADICIONA 6 DIAS UTEIS AO DIA DE HOJE
Espero ter ajudado.
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 11 de agosto de 2015 18:40
-
-
-
update tblWRITitulos Set DtDevolucaoLimite = (dbo.fn_DiaUtil) + (tblWRIRecepcao.DtRecep + 30)
from tblWRITitulos
inner join tblWRIRecepcao on tblWRIRecepcao.PK_Recepcao = tblWRITitulos.FK_tblWRIRecepcaoRecepcao
where tblWRITitulos.FK_tblWRIRecepcaoRecepcao = 562135Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "dbo.fn_DiaUtil" could not be bound.
- Editado lfernando34 sexta-feira, 7 de agosto de 2015 13:53 err
-
Esse erro acontece quando você tenta utilizar um campo que não existe, ou o retorno da sua função não pôde ser utilizado.
Como é a sua função, porque aparentemente, seu update está correto
- Editado João Otávio A sexta-feira, 7 de agosto de 2015 14:28
-
Entao, por isso que postei aqui, para alguem me ajudar
Porque eu acho que meu update esta errado
- Editado lfernando34 sexta-feira, 7 de agosto de 2015 17:11 acres
-
Fernando,
Tenta executar o update desta forma:
update tblWRITitulos Set DtDevolucaoLimite = (dbo.fn_DiaUtil) + (tblWRIRecepcao.DtRecep + 30)
from tblWRITitulos tblWRITitulos
inner join tblWRIRecepcao tblWRIRecepcao on tblWRIRecepcao.PK_Recepcao = tblWRITitulos.FK_tblWRIRecepcaoRecepcao
where tblWRITitulos.FK_tblWRIRecepcaoRecepcao = 562135
Fernando Fonseca
-
-
Boa tarde,
Considerando que existem 2 parâmetros de entrada na sua função, respectivamente a data e a quantidade de dias, e que o retorno seja uma data, experimente mais ou menos dessa forma:
Set DtDevolucaoLimite = dbo.fn_DiaUtil(tblWRIRecepcao.DtRecep, 30)
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Marcos SJ quarta-feira, 12 de agosto de 2015 20:43
-
Boa tarde,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.