Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Ola a todos,
estou com o seguinte problema, preciso calcular o tempo de atendimento de cada solicitação aberta, mas preciso apresentar isso em numero de horas (e/ou minutos), independente se houve mudança de dias. Segue os dados que tenho para realizar o calculo:
Data/hora da abertura da solicitação, (campo timestamp)
Data/hora da conclusão da solicitação (campo timestamp)
horário de inicio de atendimento (campo time)
horário de fim de atendimento (campo time)
Exemplo:
Data/hora abertura - 07/05/2015 11:01:00
Data/hora conclusão - 13/05/2015 11:47:00
horário início de atendimento: 8:30
horário fim de atendimento: 18:30
Apenas dias de semana
Preciso saber o tempo em horas e minutos da abertura da solicitação a conclusão, só que contando apenas o horário de atendimento (das 8:30 as 18:30) e se não posso contar também feriados.
ou seja, no caso de exemplo deveria dar 40h 46m de atendimento.
É possível resolver esse problema sem mexer no script?
Agradeço a ajuda.
Daniel, faça o cálculo utilizando a funçao Interval.
Exemplo: Interval(DataFim-DataInicio, 'hh:mm')
eu tentei fazer isso Yuri, de algumas formas até, mas ele em retorna o tempo como se fosse de um dia pro outro, e não considerando todos os dias.
Então você precisa calcular a hora útil em relação a essa abertura, correto?
O QlikView não possui nenhuma função para isso, você vai ter que fazer na marra (ifs).
Eu tenho um exemplo antigo que fiz isso, mas preciso encontrar
eu consegui chegar ao calculo de horas levando em conta o horário de inicio e o de fim de atendimento:
time(interval(time((interval('18:30' - time(SLA_inicio,'ddmmyyy hh:mm'))))) -
(time(interval('8:30' - time(SLA_conclusao,'ddmmyyy hh:mm:ss')))), 'hh:mm')
mas não consegui resolver o problema da passagem de dias.
tentei fazer de outra forma, contando o numero de dias decorrido e multiplicando pelo numero de horas de atendimento no dia (no caso 10h), mas na hora de converter para somar as outras horas eu não consegui também.
(day(SLA_conclusao) - day(SLA_Sinicio))*10
aqui chego ao valor de 40, mas não consigo converter corretamente em horas para somar a expressão anterior, quando eu converto ele me retorna 16h00 ao invés de 40h00.
Daniel, já encontrei o meu código.
Irei fazer um post de blog sobre o assunto e disponibilizo aqui para você.
Que ótimo Yuri! Muito obrigado pela atenção e fico no aguardo do post então
É um código bem antigo, não deve estar seguindo as melhores práticas, mas quem sabe eu não aproveito o momento para melhora-lo. De qualquer maneira irei postar exatamente o que tenho
de qualquer forma vou deixar aqui o progresso que tive.
consegui chegar a visualizar o tempo entre um e outro em horas, o que era o meu primeiro problema. E foi relativamente simples:
interval(time(SLA.dt_realizado, 'dd/mm/yyyy') - time(SLA.dt_inicio, 'dd/mm/yyyy'))
agora meu problema esta em encaixar a parametrização de horário de começo e fim de expediente e tirar os dias de fim de semana.
Daniel, já escrevi o Post e irei publica-lo amanha.
Assim que publicar coloco o link aqui para você