Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 9 anos, 9 meses atrás por Avatar de caadecarvalhocaadecarvalho.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #107277
    Avatar de Luiz FernandoLuiz Fernando
    Participante

      Boa tarde,
      Estou passando uma variável como parâmetro para um campo data no oracle dentro de uma condição “AND”.

      AND trunc(pls_segurado.DT_CONTRATACAO) <=: DT_CONTRATACAO onde dt_contratação é minha variável que recebera um valor passado pelo usuário dentro de um aplicação. Ou seja, pls_contrato.dt_contratacao recebe a variável dt_contratacao, mas ao mesmo tempo esse campo pls_contrato.dt_contratacao precisa ser menor ou igual a variável passada. Obs: quando rodo via query, sem usar a aplicação, e informo o parâmetro fixo, ele roda corretamente, mas isso dentro do SqlDBX, conforme abaixo: AND trunc(pls_segurado.DT_CONTRATACAO) <= '31/05/2014' Alguém poderia me ajudar?

      #107278
      Avatar de rmanrman
      Participante

        @Luiz Fernando

        Esse é o processo de BIND que cada linguagem de programação deve tratar. Qual linguagem você está utilizando?

        #107280
        Avatar de caadecarvalhocaadecarvalho
        Participante

          @Luiz Fernando,

          O que deve estar acontecendo é que o formato de data na sessão da aplicação está diferente do que você está usando, quando você escreve o código trunc(pls_segurado.DT_CONTRATACAO) <= '31/05/2014' você está apresentando dois problemas.

          O primeiro que mencionei a pouco (relacionado a data) e o segundo que se existir um índice na coluna DT_CONTRATACAO da tabela PLS_SEGURADO, essa query não irá utilizá-lo devido a função TRUNC.

          Portanto, para corrigir ambos os problemas problema, efetue a comparação de data com operadores e utilize a função TO_DATE na sua data informada para evitar que o Oracle efetue a conversão automática:
          [b]
          AND (pls_segurado.DT_CONTRATACAO) >= TO_DATE(’31/05/2014 00:00′,’dd/mm/yyyy hh24:mi’) AND pls_segurado.DT_CONTRATACAO) < TO_DATE('31/05/2014 00:00','dd/mm/yyyy hh24:mi') + 1)[/b]

          Abraços.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress