24 Replies Latest reply: Jan 19, 2015 7:22 AM by Yuri Nicolett RSS

    Diferença de horas(dias úteis)

      Boa tarde, alguém sabe me responder como pegar uma quantidade de horas entre dias úteis.

       

      exemplo: interval(today() -  '10/01/2014 00:00:00), essa formula retorna o intervalo de horas, mas não exclui sábados e domingos.

        • Re: Diferença de horas(dias úteis)

          Corrigindo -- >  interval(localtime() -  '10/01/2014 00:00:00)

            • Re: Diferença de horas(dias úteis)
              Clever Anjos

              Vc quer considerar quantas horas por dia útil?

               

              Você poderia considerar a seguinte expresssão

              =Interval(

                (DayEnd(vDataInicial) - vDataInicial) +

                (vDataFinal - DayStart(vDataFinal)) +

                RangeMax(NetWorkDays(vDataInicial+1,vDataFinal-1),0)

              )

              • Re: Diferença de horas(dias úteis)
                Clever Anjos

                Segue uma app com exemplo

                  • Re: Diferença de horas(dias úteis)

                    Seguindo esse exeplo seu, o resultado não está correto;

                     

                     

                    =Interval(

                        (DayEnd('2015-01-09 15:00:00') - '2015-01-09 15:00:00') +

                        ('2015-01-10 14:00:00' - DayStart('2015-01-10 14:00:00')) +

                        RangeMax(NetWorkDays('2015-01-09 15:00:00'+1,'2015-01-10 14:00:00'),0)

                     

                    retorna 22:00:00 sendo que dia 10 é um sábado.

                      • Re: Diferença de horas(dias úteis)
                        Clever Anjos

                        Veja se te atende

                        =Interval(

                          if(WeekDay('2015-01-09 15:00:00')< 5, DayEnd('2015-01-09 15:00:00') - '2015-01-09 15:00:00', 0) +

                          if(WeekDay('2015-01-10 14:00:00')< 5, '2015-01-10 14:00:00' - DayStart('2015-01-10 14:00:00'),0) +

                          RangeMax(NetWorkDays('2015-01-10 14:00:00'+1,'2015-01-10 14:00:00'-1,Feriados),0)

                          • Re: Diferença de horas(dias úteis)

                            Só nao funcionou o feriado, no lugar da variável coloquei a data que que deveria nao ser utilizada, mas não funcionou, o restante funciona muito bem.

                             

                            =Interval(

                             

                              if(WeekDay('2015-01-09 16:00:00')< 5, DayEnd('2015-01-09 16:00:00') - '2015-01-09 16:00:00', 0) +

                             

                              if(WeekDay('2015-01-13 16:00:00')< 5, '2015-01-13 16:00:00' - DayStart('2015-01-13 16:00:00'),0) +

                             

                              RangeMax(NetWorkDays('2015-01-13 14:00:00'+1,'2015-01-13 14:00:00'-1,'2015-01-13'),0)

                             

                            )

                              • Re: Diferença de horas(dias úteis)
                                Yuri Nicolett

                                Da uma olhada no meu exemplo.

                                 

                                Peguei o código do Clever

                                  • Re: Diferença de horas(dias úteis)

                                    Funciona muita bem se eu fornecer as datas diretamente, mas não é meu caso, vou postar uma parte do  script, pra ficar mais claro

                                     

                                    if(Left(interval(if(WeekDay(Timestamp(data_Final + horaFinal))< 5, DayEnd(Timestamp(data_Final + horaFina)) - Timestamp(data_Final + horaFina), 0) +

                                       if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                       RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),2) > '72:00:00' or (isnull(data_analise) and left(Interval(if(WeekDay(today())< 5, DayEnd(today()) - today(), 0) +

                                       if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                       RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),0) > '72:00:00'),'SIM','NAO') as foraPrazo,

                                      • Re: Diferença de horas(dias úteis)

                                        Correção :

                                         

                                        if(Left(interval(if(WeekDay(Timestamp(data_Final + horaFinal))< 5, DayEnd(Timestamp(data_Final + horaFinal)) - Timestamp(data_Final + horaFinal), 0) +

                                           if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                           RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),2) > '72:00:00' or (isnull(data_analise) and left(Interval(if(WeekDay(today())< 5, DayEnd(today()) - today(), 0) +

                                           if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                           RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),0) > '72:00:00'),'SIM','NAO') as foraPrazo,

                                          • Re: Diferença de horas(dias úteis)

                                            Esse script abaixo que eu criei, funciona muito bem mas não exclui dias não úteis.

                                            add o script do Clever ao meu.

                                             

                                            if(interval(Timestamp(data_Final + horaFinal) - timestamp(data + hora)) > '72:00:00' or (isnull(data_analise) and Interval(today() - timestamp(data + hora)) > '72:00:00'),'SIM','NAO') as foraPrazo

                                          • Re: Diferença de horas(dias úteis)
                                            Yuri Nicolett

                                            Não entendi

                                              • Re: Diferença de horas(dias úteis)

                                                Esse script abaixo que eu criei, funciona muito bem mas não exclui dias não úteis.

                                                coloquei o código do clever dentro do meu interval, mudei apenas os nomes dos campos.

                                                 

                                                Funcionava Assim:

                                                if(interval(Timestamp(data_Final + horaFinal) - timestamp(data + hora)) > '72:00:00' or (isnull(data_analise) and Interval(today() - timestamp(data + hora)) > '72:00:00'),'SIM','NAO') as foraPrazo

                                                 

                                                Como está agora com o script do Clever :

                                                 

                                                if(Left(interval(if(WeekDay(Timestamp(data_Final + horaFinal))< 5, DayEnd(Timestamp(data_Final + horaFinal)) - Timestamp(data_Final + horaFinal), 0) +

                                                   if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                                   RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),2) > '72:00:00' or (isnull(data_analise) and left(Interval(if(WeekDay(today())< 5, DayEnd(today()) - today(), 0) +

                                                   if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                                   RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),0) > '72:00:00'),'SIM','NAO') as foraPrazo,

                                                 

                                                Ficou mais claro?

                                                  • Re: Diferença de horas(dias úteis)
                                                    Yuri Nicolett

                                                    Se for maior que 72 horas esta fora do prazo, é isso?

                                                    • Re: Diferença de horas(dias úteis)
                                                      Yuri Nicolett

                                                      Segue com esse cálculo

                                                        • Re: Diferença de horas(dias úteis)

                                                          Obrigado Yuri e Clever, o script que vcs passaram funciona muito bem, mas quando eu tento inclui-lo no que eu preciso ele não funciona.

                                                           

                                                          if(interval(Timestamp(data_Final + horaFinal) - timestamp(data + hora)) > '72:00:00' or (isnull(dataFinal) and Interval(today() - timestamp(data + hora)) > '72:00:00'),'SIM','NAO') as foraPrazo

                                                           

                                                          Esse Script acima que eu criei, faz o que eu preciso, mas não desconsidera dias não úteis, quando coloco o script do clever junto ao meu, substituindo apenas os campos de datas, não funciona.

                                                          Meu script dps da inclusão do script de Clever, ficou assim.

                                                           

                                                          if(Left(interval(if(WeekDay(Timestamp(data_Final + horaFinal))< 5, DayEnd(Timestamp(data_Final + horaFinal)) - Timestamp(data_Final + horaFinal), 0) +

                                                            if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                                            RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),2) > '72:00:00' or (isnull(data_analise) and left(Interval(if(WeekDay(today())< 5, DayEnd(today()) - today(), 0) +

                                                            if(WeekDay(timestamp(data + hora))< 5, timestamp(data + hora) - DayStart(timestamp(data + hora)),0) +

                                                            RangeMax(NetWorkDays(timestamp(data + hora)+1,timestamp(data + hora)-1),0)),0) > '72:00:00'),'SIM','NAO') as foraPrazo,

                                                           

                                                          Mas não funciona

                                      • Re: Diferença de horas(dias úteis)
                                        Alessandro Furtado

                                        Bom dia a todos.

                                         

                                        Eu fiz a um tempo em um cliente algo parecido. Nao posso disponibilizar o modelo com mais coisas mas segue a ideia adotada para quem sabe dar uma ajuda na questão.

                                        2015-01-16 00_11_00-.png

                                        Embora na imagem tenha uma imagem mostrando de 15 em 15 minutos, eu não coloquei isto no modelo pois teria que fazer alguns novos campos e com alguns cálculos e quis deixar mais simples.

                                         

                                        A tabela com o calculo, tem o tempo total e desconsiderando o final de semana e feriado.  Esta rotina ainda calculava sobre as horas de trabalho, portanto eu tambem calculava considerando inicial do dia as 7:30 e final do dia 18:00.   Algumas linhas nas expressões estão comentadas por isto.  Se quiser usar também horário comercial, somente descomentar, caso contrario pode remover.

                                         

                                        AMF