According to cdonner, in his answer here and on his blog.
He claims that BETWEEN with date yields inconsistent results
From his blog:
<
In Oracle:
select
case when '1/1/08' between '1/1/08' and '2/1/08'
then 'in' else 'out' end as s1,
case when '1/1/08' between '12/31/07' and '1/1/08'
then 'in' else 'out' end as s2
FROM dual
in out
You are comparing strings here, not dates.
There is nothing BETWEEN
12/31/07 and 1/1/08
, as 2
goes after /
in ASCII