このエラーが発生します
操作の照合の不正な組み合わせ<=
次のWHERE句の場合:
time(table1.dt1)<=date_add(table1.tim,interval 60 second)
dt1 = datetime、tim = time
誰もが理由を知っていますか?
このエラーが発生します
操作の照合の不正な組み合わせ<=
次のWHERE句の場合:
time(table1.dt1)<=date_add(table1.tim,interval 60 second)
dt1 = datetime、tim = time
誰もが理由を知っていますか?
のマニュアルエントリで説明されているようにDATE_ADD():
戻り値は引数によって異なります。
あなたの場合、table1.timはTIME値であるため、関数は文字列を返します。
character_set_connection文字列は、とで指定された文字セットと照合で返されますcollation_connection。
のマニュアルエントリで説明されているようにTIME():
時間または日時式の時間部分を抽出し
expr、文字列として返します。
文字列はバイナリ文字列として返されます(接続文字セットを使用しないのはなぜですか?照合は私を超えています-おそらくバグですか?)。
式評価での型変換のマニュアルエントリで説明されているように:
比較操作の両方の引数が文字列の場合、それらは文字列として比較されます。
したがって、実行される比較は文字列の比較ですが、文字列を比較binaryに適した照合に強制することはできません(エンコードが不明であるため)。したがって、あなたが目撃しているエラー。
オペランドの一方または両方を明示的にキャストすることで、比較を強制的に正しく実行することもできますが、TIME型との比較から暗黙的に変換が行われるように、句を作り直したくなるでしょう。
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim