select \'2011-02-29\' BETWEEN \'2011-02-01\' AND \'2011-03-03\'
this is returning 1. I think between doesn\'t consider leap year.
You're comparing strings ... you have to cast the values (or at least the first one) to DATE
Use this:
SELECT DATE('2011-02-29') BETWEEN '2011-02-01' AND '2011-03-03'
This will give you NULL because the date is not real.
SELECT DATE('2008-02-29') BETWEEN '2008-02-01' AND '2008-03-03'
This will give you 1 (TRUE) because the date is real (leap year)