Если вы хотите передать строку типа 'May 2012'
, я бы порекомендовал:
select i.*
from income i
where i.datecol >= to_date('May 2012', 'Mon YYYY') and
i.datecol < to_date('May 2012', 'Mon YYYY') + interval '1' month;
Тем не менее, я думаю, что ваше приложение должно превратить строковое значение в диапазон дат, и вы должны использоватьэтот диапазон в вашем запросе:
select i.*
from income i
where i.datecol >= :datestart
i.datecol < :dateend + interval '1 day';
Я настоятельно рекомендую вам избегать between
с датами, особенно в Oracle.Тип данных date
имеет встроенный компонент времени, который может отбрасывать сравнения.