-
Sebagaimana dijelaskan dalam entri manual untuk
DATE_ADD()
:Dalam kasus Anda, karena
table1.tim
adalahTIME
value, fungsi mengembalikan string.String dikembalikan dalam set karakter dan susunan yang diberikan oleh
character_set_connection
dancollation_connection
. -
Sebagaimana dijelaskan dalam entri manual untuk
TIME()
:String dikembalikan sebagai string biner (mengapa tidak menggunakan set karakter koneksi &pemeriksaan di luar jangkauan saya—mungkin bug?).
-
Sebagaimana dijelaskan dalam entri manual untuk Konversi Jenis dalam Evaluasi Ekspresi :
Oleh karena itu perbandingan yang dilakukan adalah perbandingan string, tetapi
binary
string tidak dapat dipaksa ke susunan yang sesuai untuk perbandingan (karena penyandiannya tidak diketahui). Karenanya kesalahan yang Anda saksikan.
Seseorang dapat memaksa perbandingan dilakukan dengan benar dengan casting
secara eksplisit satu atau kedua operan, tetapi saya akan tergoda untuk mengerjakan ulang klausa sehingga konversi terjadi secara implisit dari perbandingan dengan TIME
ketik:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim