年が文字列の最初の部分である場合にのみ機能する where 句で日付比較を行っています。crDate フィールドは DATETIME であるため、次の両方が機能するべきではありませんか?
and crDate between '2009/01/01' and '2009/01/21'
and crDate between '01/01/2009' and '01/21/2009'
これらのステートメントは両方とも同じようですが、最初のステートメントは期待される結果を返し、2番目のステートメントは0レコードを返します。
これらの機能を異なるものにする、オフまたはオンにすることができる mySQL の設定はありますか?