select \'2011-02-29\' BETWEEN \'2011-02-01\' AND \'2011-03-03\'
this is returning 1. I think between doesn\'t consider leap year.
Problem is you're comparing strings, not dates. If you try:
select DATE('2011-02-29') you get a NULL...