Restringir variaveis do tipo DATA usando BETWEEN

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
alexandre_costa
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Seg, 25 Ago 2008 11:18 am
Localização: Nova Mutum-MT

Olá a todos!

Estou com um grande problema na montagem de um relatorio usando a sintaxe no PL/SQL para USUARIOS comum utilizar a qualquer momento.

Por ser um consulta pesada no meu banco preciso limitar o perido da consulta entre datas, colocando apenas 15 dias.

Selecionar tudo

 between '&data_fin' - '15' and '&data_fin'
As variaves são iguais pois o usuario só irá informa uma data e após isso a sintaxe tera que pegar essa data q ele informou e subitrair 15 dias, assim formando a data inicial.
A coluna tem o formato do tipo data('DD/MM/YYYY'). Já tentei converter dessa maneira:

Selecionar tudo

between TO_DATE(('&date_fin')-(TO_DATE(15, 'DD')), 'DD/MM/YYYY' and '&data_fin'

Talves seria possivel usar o CASE, mudei para duas variaveis, e tentei da seguinte maneira:

Selecionar tudo

( case when '&data_fin'-'&data_in' <= 15 then "COLUNA" between '&data_in' and '&data_fin'
           else
           end )

também não deu certo.

alguém poderia me ajudar????


desde já agradeço!!

abraçoss!
rodfbar
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 241
Registrado em: Ter, 09 Out 2007 11:15 am
Localização: Batatais - SP

ola alexandre...

quando você roda retorna alguma mensagem de erro pra você?
alexandre_costa
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Seg, 25 Ago 2008 11:18 am
Localização: Nova Mutum-MT

usando o BETWEEN da: numero invalido (porem já tentei converter para todos os formados possiveis, rsrsrs)

usando o CASE da : 'missing keyword'
Rique
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 19
Registrado em: Ter, 12 Ago 2008 4:45 pm
Localização: Santa Barbara d'Oeste - SP
Rique

E ai Alexandre!!!!! beleza???

Cara, usando BETWEEN teria q funcionar!!!

Na linha do seu BETWEEN tem um erro, a mascara esta fora do parentese, tente usar desta maneira:

Selecionar tudo

between TO_DATE('&date_fin','DD/MM/YYYY') - 15 and TO_DATE('&data_fin','DD/MM/YYYY') 
Talvez seria bom você passar a mascara no TO_DATE de cada parametro, as vezes a mascara q esta sendo enviada no parametro é diferente da mascara do banco.

Selecionar tudo

SELECT *
  FROM RA_CUSTOMER_TRX_ALL
 WHERE CREATION_DATE BETWEEN TO_DATE('01-01-2008','DD-MM-RRRR')-15  AND TO_DATE('01-01-2008','DD-MM-RRRR')
Se não der me avisa pra tentar olhar alguma outra coisa....


Abs
alexandre_costa
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 22
Registrado em: Seg, 25 Ago 2008 11:18 am
Localização: Nova Mutum-MT

Rique,

Muito obrigado caraa!!!
Meu erro era simples, porem não tinha me tocado.

Eu tinha que converter as duas variaveis, porem eu só converti uma.

não sei porque, mas quando eu executava:

Selecionar tudo

between '&data_fin' AND '&data_fin'
(executava perfeitamente, porem fazia apenas um dia)

porem quando eu fazia:

Selecionar tudo

between TO_DATE('&dat_fin','DD/MM/YYYY')-1 AND '&dat_fin' 
não dava certo!

bastou eu colocar:

Selecionar tudo

between TO_DATE('&dat','DD/MM/YYYY')-1 AND TO_DATE('&dat','DD/MM/YYYY')
e funcionou!!

Muito obrigado!

Abraços



Alexandre
Responder
  • Informação