-
Wie im manuellen Eintrag für
DATE_ADD()
:In Ihrem Fall, weil
table1.tim
ist eineZEIT
Wert, gibt die Funktion einen String zurück.Die Zeichenfolge wird in dem Zeichensatz und der Sortierung zurückgegeben, die durch
Zeichensatz_Verbindung undcollation_connection
. -
Wie im manuellen Eintrag für
TIME erklärt ()
:Die Zeichenfolge wird als binäre Zeichenfolge zurückgegeben (warum nicht den Verbindungszeichensatz und die Sortierung verwenden, ist mir schleierhaft – vielleicht ein Fehler?).
-
Wie im manuellen Eintrag für Type Conversion in Expression Evaluation erklärt :
Daher ist der durchgeführte Vergleich ein Zeichenfolgenvergleich, aber der
binäre
Zeichenfolge kann nicht in eine geeignete Sortierung zum Vergleich gezwungen werden (da ihre Codierung nicht bekannt ist). Daher der Fehler, den Sie beobachten.
Durch explizites casting
könnte man die korrekte Durchführung des Vergleichs erzwingen einen oder beide Operanden, aber ich wäre versucht, die Klausel einfach so zu überarbeiten, dass die Konvertierung implizit aus dem Vergleich mit einem TIME
erfolgt Typ:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim