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