-
Zoals uitgelegd in de handmatige invoer voor
DATE_ADD()
:In jouw geval, omdat
table1.tim
is eenTIME
waarde, retourneert de functie een string.De tekenreeks wordt geretourneerd in de tekenset en sortering gegeven door
character_set_connection
encollation_connection
. -
Zoals uitgelegd in de handmatige invoer voor
TIME()
:De tekenreeks wordt geretourneerd als een binaire tekenreeks (waarom gebruik ik de tekenset voor verbindingen niet en sortering is mij een raadsel - misschien een bug?).
-
Zoals uitgelegd in de handmatige invoer voor Typeconversie in expressie-evaluatie :
Daarom is de uitgevoerde vergelijking een stringvergelijking, maar de
binary
string kan niet worden gedwongen tot een geschikte vergelijking voor vergelijking (omdat de codering niet bekend is). Vandaar de fout waarvan u getuige bent.
Men zou kunnen afdwingen dat de vergelijking correct wordt uitgevoerd door expliciet casting
een of beide operanden, maar ik zou in de verleiding komen om de clausule alleen maar te herwerken zodat de conversie impliciet plaatsvindt door vergelijking met een TIME
typ:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim