la solucion que dice (o disse em portugues?) abonacin
select *
from tabA
where data_cadastro between to_date(’05/2008′,’MM/YYYY’) and last_day(to_date(’07/2008′,’MM/YYYY’))
es correcta, o mas bien casi correcta
suponemos que data_cadastro es date verdad? entonces puede tener horas minutos y segundos disntinto de 00:00:00
entonces lo correcto seria
select *
from tabA
where data_cadastro >= to_date(’05/2008′,’MM/YYYY’) and data_cadastro < last_day(to_date('07/2008','MM/YYYY')) +1
o
select *
from tabA
where trunc(data_cadastro) between to_date('05/2008','MM/YYYY') and last_day(to_date('07/2008','MM/YYYY'))
con trunc de la fecha HH24:MI:SS pasan a ser todos 0
si quieren un indice eficiente ese indice para esta consulta sera un trunc(data_cadastro)
ahora si data_cadastro no guarda el detalle de horas minutos segundos la opcion inicial es la correcta