-
Както е обяснено в ръчното въвеждане за
DATE_ADD()
:Във вашия случай, защото
table1.tim
еTIME
стойност, функцията връща низ.Низът се връща в набора от знаци и съпоставяне, дадени от
character_set_connection
иcollation_connection
. -
Както е обяснено в ръчното въвеждане за
TIME()
:Низът се връща като двоичен низ (защо не използвам набора от символи за връзка и сортирането е извън мен — може би грешка?).
-
Както е обяснено в ръчния запис за Преобразуване на тип при оценка на израза :
Следователно извършеното сравнение е сравнение на низове, но
binary
низът не може да бъде принуден към подходящо съпоставяне за сравнение (тъй като неговото кодиране не е известно). Оттук и грешката, на която сте свидетел.
Човек може да принуди сравнението да бъде извършено правилно чрез изрично привеждане
един или и двата операнда, но бих се изкушил просто да преработя клаузата, така че преобразуването да се извършва имплицитно от сравнение с TIME
тип:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim