-
Som forklaret i den manuelle post for
DATE_ADD()
:I dit tilfælde, fordi
table1.tim
er enTIME
værdi, returnerer funktionen en streng.Strengen returneres i tegnsættet og sorteringen givet af code>character_set_connection og
collation_connection
. -
Som forklaret i den manuelle post for
TIME ()
:Strengen returneres som en binær streng (hvorfor bruger man ikke forbindelsestegnsættet, og det er umuligt at sortere - måske en fejl?).
-
Som forklaret i den manuelle indgang til Typekonvertering i udtryksevaluering :
Derfor er den udførte sammenligning en strengsammenligning, men den
binære
streng kan ikke tvinges til en passende sammenstilling til sammenligning (da dens kodning ikke er kendt). Derfor fejlen du er vidne til.
Man kunne tvinge sammenligningen til at blive udført korrekt ved eksplicit casting
en eller begge operander, men jeg ville være fristet til bare at omarbejde klausulen, så konverteringen finder sted implicit fra sammenligning med en TIME
type:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim