質問: mysqldとmysqlは5.5.30。 phpinfo()のmysqlのセクションでは client api version 5.5.30 と出ています。 show variablesで見るとdate_formatはどちらも%y-%m-%dになっています。 他にどこを確認すればいいでしょうか?
回答: cast してみたら? insert のときは、カラム型に合わせて、かなり柔軟対処してくれるけど where などでの比較式においては、カラム値の方を文字列変換してから、文字列比較したりすることがあるらしいので(特にdatetime と日付だけの文字列を比較したとき)、今回は文字コードかcollate の関係で、それが発生していると見られます。 その場合、文字列を日付にキャストするといいらしいです。 where day = cast('2014-8-19' as date) この日付文字列の所を、プレースホルダーにすれば、ユーザーから日付入力して貰っても、範囲外でもない限りかなり柔軟に、日付対応できます。 参考 http://matsu.teraren.com/blog/2010/07/27/mysql-date-string/ 「mysqlの日付比較:比較対象のカラムは型を意識しなければならない。」