-
あなたの場合、
table1.tim
TIME
です 値の場合、関数は文字列を返します。文字列は、<によって指定された文字セットと照合で返されます。 code> character_set_connection および
collation_connection
。 -
文字列はバイナリ文字列として返されます(接続文字セットを使用しないのはなぜですか?照合は私を超えています-おそらくバグですか?)
-
式評価での型変換 のマニュアルエントリで説明されているように :
したがって、実行される比較は文字列比較ですが、
binary
文字列を比較のために適切な照合に強制することはできません(そのエンコーディングが不明であるため)。したがって、あなたが目撃しているエラー。
明示的に TIME
との比較から暗黙的に変換が行われるように、句を作り直したいと思います。 タイプ:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim