This is Even Rouault's answer to the OGR ticket:
"The issue is that binary comparisons of date/datetime field have never (yet) been implemented in OGR SQL dialect. In 1.10 and before, in fact, it turned to be an implicit conversion to string, which can cause really strange behaviour.
For example, you could have well used
"select * from test2 where date < 'bla'"
and it would not have complained. Or
-sql "select * from test2 where date = '1969/02/11'"
would return 3 results as expected, but
-sql "select * from test2 where date = '1969-02-11'"
1.11 just rejects implicit comparison between date and string literals. You can still get the old behaviour by expliciting casting the date field to character, with :
-sql "select * from test2 where cast(date as character) < '1970/01/01'".
That will work with 1.10 too.
The fact that it works with sqlite dialect is just that sqlite has no strong typing, so implicit conversions to string must also be done.