11 Replies Latest reply: Sep 29, 2017 2:26 PM by Valerio Moreira dos Santos RSS

    Tempo de Casa

    Valerio Moreira dos Santos

      Olá, boa tarde!

      No arquivo em anexo o cálculo não está correto, pois apresenta 8 anos, 2 meses e 2 dias. Entretanto o correto seria apenas 8 anos e 2 meses. A expressão usada é a seguinte:

      Floor((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365) & ' Anos '

      &

      Floor(Frac((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365) *12) & ' Meses '

      &

      Floor(Frac(Frac((DtDemitido.ComunicadoDispensa - DtAdmitido.ComunicadoDispensa)/365) *12)*24) & ' Dias'

      Há algo errado? se sim, o que?

      No aguardo, obrigado.

        • Re: Tempo de Casa
          Vineeth Pujari

          20012 and 2016 were leap years

           

          Also dividing by a static number would not be the best way to do this

          • Re: Tempo de Casa
            Iwry Sousa

            Boa tarde Valério,

             

            Provavelmente pelos anos bissextos.

            Tente com o código abaixo:

             

             

            /*Anos*/

                   (

                       YEAR(DtDemitido.ComunicadoDispensa)

                       - YEAR(DtAdmitido.ComunicadoDispensa)

                       - IIF(

                           MONTH(DtDemitido.ComunicadoDispensa) < MONTH(DtAdmitido.ComunicadoDispensa)

                           OR (

                                  MONTH(DtDemitido.ComunicadoDispensa) = MONTH(DtAdmitido.ComunicadoDispensa)

                                  AND DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa)

                              ),

                           1,

                           0

                       )

                   )

             

            /*Meses*/

                   (

                       MONTH(DtDemitido.ComunicadoDispensa)

                       -MONTH(DtAdmitido.ComunicadoDispensa)

                       + IIF(

                           MONTH(DtDemitido.ComunicadoDispensa) -MONTH(DtAdmitido.ComunicadoDispensa)

                           > 0,

                           0,

                           12

                       )

                       -IIF(

                           DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa),

                           1,

                           0

                       )

                   )

             

            /*Dias*/

                   (

                       DtDemitido.ComunicadoDispensa

                       -MakeDate(

                           YEAR(DtDemitido.ComunicadoDispensa),

                           MONTH(DtDemitido.ComunicadoDispensa)

                           -IIF(

                               DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa),

                               1,

                               0

                           ),

                           DAY(DtAdmitido.ComunicadoDispensa)

                       )

                   )

            • Re: Tempo de Casa
              Iwry Sousa

              Bom dia Valerio,

               

              Testei aqui com estas datas e o resultado foi 0 anos, 11 meses e 29 dias.

              Tente Copiar novamente.

               

              E Carregue estas formulas pelo seu script separadas conforme exemplo abaixo, pois assim seu Dashboard fica mais "leve":

               

               

              EXEMPLO_CARGA:

              LOAD *,

                     (

                         YEAR(DtDemitido.ComunicadoDispensa)  - YEAR(DtAdmitido.ComunicadoDispensa)

                         - IF(

                             MONTH(DtDemitido.ComunicadoDispensa) < MONTH(DtAdmitido.ComunicadoDispensa)

                             OR (

                                    MONTH(DtDemitido.ComunicadoDispensa) = MONTH(DtAdmitido.ComunicadoDispensa)

                                    AND DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa)

                                ),

                             1,

                             0

                         )

                     ) as Anos,

                     (

                         MONTH(DtDemitido.ComunicadoDispensa) - MONTH(DtAdmitido.ComunicadoDispensa)

                         + IF(

                             (MONTH(DtDemitido.ComunicadoDispensa) -MONTH(DtAdmitido.ComunicadoDispensa)) > 0,

                             0,

                             12

                         )

                         -IF(

                             DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa),

                             1,

                             0

                         )

                     ) as Meses,

                     (

                         DtDemitido.ComunicadoDispensa

                         -MakeDate(

                             YEAR(DtDemitido.ComunicadoDispensa),

                             MONTH(DtDemitido.ComunicadoDispensa)

                             -IF(

                                 DAY(DtDemitido.ComunicadoDispensa) < DAY(DtAdmitido.ComunicadoDispensa),

                                 1,

                                 0

                             ),

                             DAY(DtAdmitido.ComunicadoDispensa)

                         )

                     ) as Dias

               

               

              Se não der certo, anexe seu exemplo aqui que verifico para você.

               

               

              Até,

                • Re: Tempo de Casa
                  Valerio Moreira dos Santos

                  Olá Iwry, eu estava a utilizar o script como expressão. Agora o carreguei como o seu exemplo, a fazer o LOAD. O problema está em situações como este exemplo, 18/09/2017 - 11/09/2017 me trás o resultado = 0 anos, 12 meses e 7 dias. Concorda que deveria ser 1 ano, o meses e 7 dias?

                  OBS.: Esta é minha expressão agora: Anos & ' anos ' & Meses & ' meses ' & Dias & ' dias'

                • Re: Tempo de Casa
                  Iwry Sousa

                  Valerio,

                   

                  Anexe o arquivo do Qlikview aqui q vejo o que pode estar errado, pois uso essas fórmulas e não dá errado com nenhum período.

                   

                   

                  Até,