-
Conforme explicado na entrada manual paraDATE_ADD():
No seu caso, porquetable1.timé umTIMEvalor, a função está retornando uma string.
A string é retornada no conjunto de caracteres e agrupamento fornecido porcharacter_set_connectionecollation_connection.
-
Conforme explicado na entrada manual paraTIME():
A string é retornada como uma string binária (por que não usar o conjunto de caracteres de conexão e o agrupamento está além de mim - talvez um bug?).
-
Conforme explicado na entrada manual para Conversão de tipo na avaliação de expressão :
Portanto, a comparação realizada é uma comparação de strings, mas obinarystring não pode ser forçada a um agrupamento adequado para comparação (já que sua codificação não é conhecida). Daí o erro que você está testemunhando.
Pode-se forçar a comparação a ser conduzida corretamente explicitamente casting um ou ambos os operandos, mas eu ficaria tentado apenas a retrabalhar a cláusula para que a conversão ocorra implicitamente a partir da comparação com um
TIME modelo:TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim