Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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