-
Como se explica en la entrada manual para
DATE_ADD()
:En tu caso, porque
table1.tim
es unTIME
value, la función devuelve una cadena.La cadena se devuelve en el conjunto de caracteres y la intercalación proporcionada por
character_set_connection
ycollation_connection
. -
Como se explica en la entrada manual para
TIME()
:La cadena se devuelve como una cadena binaria (¿por qué no usar el conjunto de caracteres de conexión y la intercalación me supera, tal vez un error?).
-
Como se explica en la entrada manual para Type Conversion in Expression Evaluation :
Por lo tanto, la comparación realizada es una comparación de cadenas, pero el
binary
la cadena no se puede forzar a una intercalación adecuada para la comparación (ya que se desconoce su codificación). De ahí el error que está presenciando.
Se podría forzar a que la comparación se realice correctamente casting
explícitamente uno o ambos operandos, pero estaría tentado a volver a trabajar en la cláusula para que la conversión se realice implícitamente a partir de la comparación con un TIME
tipo:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim