一連の人々の間で送信された一連のメッセージを含むデータベースがあり、各メッセージには日時形式のタイムスタンプがあります。この日時列から時刻を抽出し、それを静的なタイムスタンプと比較して、各ユーザーがその時刻以降に送信したメッセージの数を確認しようとしています。そのために使用しているコードは次のとおりです。
SELECT sender_id, SUM(CASE WHEN DATE_FORMAT(created_at,'%H:%i:%s')>CAST('17:00:00' AS time) THEN 1 ELSE 0 END) AS no_msgs_afterhours GROUP BY sender_id;
面白いことに、これは MariaDB データベース インスタンスでは完全に機能しますが、MySQL インスタンスでは次のエラーが発生します。
エラー 1267 (HY000): 操作 '>' の照合 (utf8_general_ci,COERCIBLE) と (latin1_swedish_ci,NUMERIC) の不正な組み合わせ
MariaDB インスタンスはバージョン 5.5.32 で、MySQL インスタンスは 5.5.29 です。これは MySQL のバージョンの問題でしょうか? MySQL 4.1.8 以前で同様の照合の問題があったことをオンラインで読みましたが、ここでは当てはまりません。