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 need to cast it to date like:
SELECT DATE('2011-02-29') BETWEEN DATE('2011-02-01') AND DATE('2011-03-03')
from the site :
For best results when using BETWEEN with date or time values, use CAST() to explicitly convert the values to the desired data type. Examples: If you compare a DATETIME to two DATE values, convert the DATE values to DATETIME values. If you use a string constant such as '2001-1-1' in a comparison to a DATE, cast the string to a DATE.