Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
valerioms
Creator
Creator

Extração Tempo Casa

Bom dia!

Tenho na figura 2 o script de cálculo da figura 1. O problema é que conforme visualizado nesta última o tempo de empresa aparece com x anos, 12 meses e x dias. Portanto o cálculo para, penso anos e meses está incorreto pois 12 meses se torna 1 ano e portanto o resultado deveria ser x anos, 0 meses e x dias. Onde aparecem 12 meses deveria ser 0 meses. Como resolver?

5 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Valerio,

uma alternativa

QlikView x64 - [C__tmp_Calculo Tempo.qvw_]---2017-12-23 17_41_38.png


LOAD

    date(date#(Admitido,'DD/MM/YYYY'))  as Admitido,

    date(date#(Demitidos,'DD/MM/YYYY')) as Demitidos,

    Demitidos - Admitido as Diferenca_Dias,

    Floor((Demitidos - Admitido)/365.25)    as Anos,

    floor((Frac((Demitidos - Admitido)/365.25)*365.25)/30)              as Meses,

    floor(round(frac((Frac((Demitidos - Admitido)/365.25)*365.25)/30)*30,0.01)) as Dias;

LOAD * inline [

Admitido  ,Demitidos

14/12/2015,14/12/2017

01/12/2016,14/12/2017

01/12/2010,14/12/2017

07/12/2015,13/12/2017

08/12/2017,12/12/2017

01/12/2017,12/12/2017

01/12/2017,11/12/2017

];



furtado@farolbi.com.br
valerioms
Creator
Creator
Author

untitled.bmpAlessandro, apliquei seu código e ainda assim continuo não obtendo o resultado correto. Veja o print anexo.

Este é seu código aplicado:

CDIFinal:

LOAD *,

    DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa as Diferenca_Dias,

    Floor((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365.25)    as Anos,

    floor((Frac((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365.25)*365.25)/30)              as Meses,

    floor(round(frac((Frac((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365.25)*365.25)/30)*30,0.01)) as Dias

Resident ComunicadoDispensa;

As datas são carregadas em formato inteiro (*1) e depois formatadas da seguinte forma na dimensão:

Date(DtDemitido.ComunicadoDispensa, 'DD/MM/YYYY') e a mesma coisa para DtAdmitido.

Dúvida: Porque 365.25?

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Valério,

eu estava usando o 365.25 por causa do ano bissexto.

Mas, mudei o calculo e sendo franco, precisava que voce colocasse 3 conjuntos de datas e qual o resultado esperado.

Por que isto?  Pois o calculo, se eu usar sites que calculam vão dar resultados diferentes e ao meu ver alguns ate errados (dependendo do ponto de vista...).....

Veja:

QlikView x64 - [C__tmp_Calculo Tempo.qvw]---2017-12-26 13_27_17.png

      https://pt.calcuworld.com/calendarios/calculadora-de-tempo-entre-duas-datas/

Calculadora de tempo entre duas datas---2017-12-26 13_29_55.png

    https://www.timeanddate.com/date/durationresult.html

    Calculate Duration Between Two Dates – Results---2017-12-26 13_30_52.png

Neste caso, temos anos e meses iguais, mas diferença nos dias. um com 24 e o outro com 27. Qual o calculo dos dias?  30 dias - 7 dias do mes inicial + 2 dias do mes final - 1 dia =  24 ?

O do dias com 27 seria como?  Qual deles ou qual seria a quantidade de dias?

31 dias de Janeiro menos 7 dias transcorridos + 2 dias = 26?

Qual o resultado esperado?

furtado@farolbi.com.br
valerioms
Creator
Creator
Author

Olá Alessandro, desculpe a demora. Na verdade o problema segundo o print enviado está nos meses. Veja o exemplo que você usou. No print está 14 anos, 12 meses e 0 dias. O correto é o seu resultado, 14 anos, 11 meses e 24 dias. Era isto que deveria constar no print. Entendeu? Eu apliquei a sua fórmula e obtenho o resultado do print e não o seu.

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Valério,

da uma olhada no resultado do print do meu post anterior.....é o resultado esperado,certo?

furtado@farolbi.com.br