Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Morpheus#2005

Calculando Fim de Semana Parte II

Recommended Posts

Olá pessoal beleza...Eu preciso add dias quando for fim de semana, seguindo essa logica em VB.. tem como fazer isso direto no SQL ?????Sub calc()linha = 2Do While Plan1.Cells(linha, 1) <> ""inicio = Plan1.Cells(linha, 1)fim = Plan1.Cells(linha, 2)prazo = 1If Weekday(fim) = 1 Then: fim = fim - 2If Weekday(fim) = 7 Then: fim = fim - 1 Do While inicio <> fim If Weekday(inicio) <> 1 And Weekday(inicio) <> 7 Then prazo = prazo + 1 End If inicio = inicio + 1 LoopPlan1.Cells(linha, 3) = prazolinha = linha + 1LoopEnd SubTem como ?Tipo utilizando essa formula eu vou ter ;;;; 6 dias de prazo..Inicio Fim Prazo01/06/2006 13/06/2006 9Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem, qual a dificuldade que você esta tendo para passar para SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal beleza...Eu preciso add dias quando for fim de semana, seguindo essa logica em VB.. tem como fazer isso direto no SQL ?????Sub calc()linha = 2Do While Plan1.Cells(linha, 1) <> ""inicio = Plan1.Cells(linha, 1)fim = Plan1.Cells(linha, 2)prazo = 1If Weekday(fim) = 1 Then: fim = fim - 2If Weekday(fim) = 7 Then: fim = fim - 1 Do While inicio <> fim If Weekday(inicio) <> 1 And Weekday(inicio) <> 7 Then prazo = prazo + 1 End If inicio = inicio + 1 LoopPlan1.Cells(linha, 3) = prazolinha = linha + 1LoopEnd SubTem como ?Tipo utilizando essa formula eu vou ter ;;;; 6 dias de prazo..Inicio Fim Prazo01/06/2006 13/06/2006 9Obrigado

Espero que ajude....declare @hh_real nvarchar(2)declare @mi_real nvarchar(2)declare @real_time datetimedeclare @hora_atendente datetimedeclare @diff datetimedeclare @num_dias intdeclare @num nvarchar(10)declare @atendente nvarchar(25)declare @msn nvarchar(255)declare @horai datetimedeclare @hora1 datetimedeclare @hora2 datetimedeclare @hora datetimedeclare @num_diasv nvarchar(10)declare @cont intdeclare @data datetimedeclare @weekday nvarchar(15)declare @weekday_add nvarchar(15)declare @data_add datetimeset @hh_real = (select datepart(hh, getdate()))set @mi_real = (select datepart(mi, getdate()))set @real_time = convert(datetime, @hh_real + ':' + @mi_real)declare c1 cursor for select numero, atendente, DATEDIFF(day, CONVERT(datetime, RIGHT(LEFT(dataatendente, 5), 2) + '-' + LEFT(dataatendente, 2) + '-' + RIGHT(dataatendente, 4)), getdate()), CONVERT(datetime, horaatendente), CONVERT(datetime, RIGHT(LEFT(dataatendente, 5), 2) + '-' + LEFT(dataatendente, 2) + '-' + RIGHT(dataatendente, 4)), DATENAME(weekday, CONVERT(datetime, RIGHT(LEFT(dataatendente, 5), 2) + '-' + LEFT(dataatendente, 2) + '-' + RIGHT(dataatendente, 4))), DATENAME(weekday, DATEADD(day, 1, CONVERT(datetime, RIGHT(LEFT(dataatendente, 5), 2) + '-' + LEFT(dataatendente, 2) + '-' + RIGHT(dataatendente, 4)))), DATEADD(day, 1, CONVERT(datetime, RIGHT(LEFT(dataatendente, 5), 2) + '-' + LEFT(dataatendente, 2) + '-' + RIGHT(dataatendente, 4))) from solicitacao where status = 2 order by atendenteopen c1fetch from c1 into @num, @atendente, @num_dias, @horai, @data, @weekday, @weekday_add, @data_adddelete from msnwhile (@@fetch_status = 0) /* Enquanto existir linha faça */begin /* ----------------------------------Feriado---------------------------------------*/ set @cont = 0 set @cont = (select count (*) from feriado where data_feriado >= @data and data_feriado <= getdate()) set @num_dias = @num_dias - @cont /*----------------------------------Sábado e Domingo --------------------------------------*/ /*Verifica se data (data inicial) é igual a sábado ou domingo*/ if (@weekday = 'saturday') or (@weekday = 'sunday') begin set @num_dias = @num_dias - 1 end /*Não é preciso verificar a data real porque a procedure será executada de segunda a sexta*/ /*Verifica se o intervalo entre a data (data inicial) e a data real é igual a sábado ou domingo*/ set @cont = 0 while (@data_add < getdate()) begin if (@weekday_add = 'saturday') or (@weekday_add = 'sunday') begin set @cont = @cont + 1 end set @data_add = (select dateadd(day, 1, @data_add)) set @weekday_add = (select DATENAME(weekday, @data_add)) end set @num_dias = @num_dias - @cont /* ---------------------------------------------------------------*/ if @num_dias > 1 begin set @num_diasv = convert(varchar(10), @num_dias) set @msn = 'O chamado número ' + @num + ' está aberto com o(a) atendente ' + @atendente + ' a ' + @num_diasv + ' dias.' insert into msn(msn) values(@msn) end fetch from c1 into @num, @atendente, @num_dias, @horai, @data, @weekday, @weekday_add, @data_add /* próxima linha */end /* end while */ close c1deallocate c1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.