-
Conforme explicado na entrada manual paraDATE_ADD()
:
No seu caso, porquetable1.tim
é umTIME
valor, a função está retornando uma string.
A string é retornada no conjunto de caracteres e agrupamento fornecido porcharacter_set_connection
ecollation_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 obinary
string 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