Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

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.

Labels (1)
24 Replies
Not applicable
Author

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.

Clever_Anjos
Employee
Employee

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)

Not applicable
Author

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)

)

nicolett_yuri

Da uma olhada no meu exemplo.

Peguei o código do Clever

Not applicable
Author

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,

Not applicable
Author

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,

nicolett_yuri

Não entendi

Not applicable
Author

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

Not applicable
Author

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?

nicolett_yuri

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