none
Pular DATEADD em Fim de semana com Base em Produção RRS feed

  • Pergunta

  • Boa tarde,Sou novo por aqui e estou precisando de uma ajuda em uma consulta que estou fazendo. 

    a mesma deve me retornar o dia que ficara pronto um pedido que está em produção, porem não posso contabilizar o Domingo por não ser trabalhado

    Minha consulta está +/- assim 

    select *,DATEADD(MI, (28000 / 315)*60 , GETDATE())

    sendo que o 28000 seria a quantidade total que tenho para produzir o 315 é a quantidade que produzo por hora 

    então ele retornar uma media de 88 horas para finalizar o pedido. porem com o DATEADD consigo colocar em minutos quanto que irei terminar, porem eles esta contabilizando o domingo como dia trabalho. existe alguma forma de fazer ele pular o domingo e continuar a soma na segunda feira ?


    quinta-feira, 23 de agosto de 2018 20:49

Respostas

Todas as Respostas

  • Deleted
    sexta-feira, 24 de agosto de 2018 00:30
  • isso mesmo, 24 horas 

    menos de domingo as 00:00 ate domingo 23:59 

    sexta-feira, 24 de agosto de 2018 11:30
  • Deleted
    sábado, 25 de agosto de 2018 18:34
  • Boa noite, montei uma lógica que pega a data inicial e final e conta os domingos, com base nesta quantidade eu subtraio do total de horas, esta lógica é um pouco simples mas pode ajudá-lo em conjunto as alternativas sugeridas pelo José Diz.

    DECLARE @dt_atual    datetime = GETDATE()
           ,@dt_final    datetime = NULL
           ,@days        smallint = 1
           ,@daysAdd     smallint = NULL
           ,@sundayCount smallint = 0
           ,@weekDay     tinyint  = 0; --//1 domingo
                                       --//2 segunda
                                       --//3 terça
                                       --//4 quinta
                                       --//6 sexta
                                       --//7 sábado
    
    SELECT @dt_final = DATEADD(DAY, @days, @dt_atual)
          ,@daysAdd  = DATEDIFF(DAY,@dt_atual, @dt_final)
          ,@weekDay  = DATEPART(WEEKDAY, @dt_atual);
    
    SELECT @daysAdd     -= CASE @weekDay WHEN 1 THEN 1 ELSE 7 - @weekDay + 1 END
          ,@sundayCount  = CASE WHEN @days <> @daysAdd THEN 1 ELSE 0 END
          ,@sundayCount += FLOOR(@daysAdd / 7)
    
    SELECT DATEDIFF(HOUR,@dt_atual, @dt_final) AS Total_Hrs_Com_Domingos
          ,DATEDIFF(HOUR, @dt_atual, DATEADD(HOUR, -(@sundayCount * 24), @dt_final)) AS Total_Hrs_Sem_Domingos

    sábado, 25 de agosto de 2018 22:30