7 Replies Latest reply: Mar 6, 2013 9:52 PM by Aderlan Rodrigues RSS

    Problemas em validação de datas

    pericles silva

      (Obs: QVD em anexo)

       

      Estou com um problema para validar datas de N registros de uma tabela. Preciso validar se a data do saldo está entre as datas válidas de início em fim.

       

      Reparem que os três campos de data (%Data, dat_inic_valid e dat_fim_valid) estão de forma numérica.

       

      Quando é feito um LOAD full são retornados 625 registos.

       

      Reparem que esta data 40999 (31/03/2012) se encontra válida para todos os registros. A validação é dat_inic_valid <= data <= dat_fim_valid.

      Segue abaixo.

      ScreenShot00191.jpg

       

      Quando é feito outro LOAD, com as validações de data, são retornados 339 registros, sendo que era para retornar 625, pois a data 40999 está válida em todos os registros.

      ScreenShot00194.jpg

      Poderiam me ajudar? Não sei se é problema de tipo de formato. Já testei varias vezes, de varias formas, e não obtive sucesso.

       

      SALDO:

      LOAD

           %EmpresaID,

           %ContaContábilID,

           cod_ccusto,

           ind_criter_distrib_ccusto,

           %Data,

           dat_inic_valid,

           dat_fim_valid,

           val_sdo_ctbl_fim

      FROM SALDO.QVD (qvd)

      //Where (dat_inic_valid <= %Data) and (%Data <= dat_fim_valid)

      ;

        • Re: Problemas em validação de datas
          Cesar Accardi

          Olá Péricles,

           

          Eu acho que o seu problema está nos formatos das datas, alguma data está sendo interpretada incorretamente pelo QlikView... Verifica qual é o formato da data no momento da leitura do arquivo (Você pode fazer isto na pré-visualização de carga do QVD, por exemplo). Aí aplica a função Date# para especificar o formato que está vindo, e no resultado você aplica a função Date para converter para o formato padrão de forma que você garanta que a comparação está sendo feita no mesmo formato. Exemplo:

           

          Vamos supor que no seu arquivo os campos dat_inic_valid e dat_fim_valid estão assim: 2012-03-22 e 2012-12-09 (YYYY-MM-DD) e o campo %Data está assim: 15/04/2012 (DD/MM/YYYY). Neste caso você deveria filtrar na cláusula where da seguinte forma:

           

          SALDO:

          LOAD

               %EmpresaID,

               %ContaContábilID,

               cod_ccusto,

               ind_criter_distrib_ccusto,

               %Data,

               dat_inic_valid,

               dat_fim_valid,

               val_sdo_ctbl_fim

          FROM SALDO.QVD (qvd)

          WHERE (Date(Date#(dat_inic_valid,'YYYY-MM-DD'),'DD/MM/YYYY') <= %Data) and

          (%Data <= Date(Date#(dat_fim_valid,'YYYY-MM-DD'),'DD/MM/YYYY');


          Abraços,

          Cesar Accardi