-
Comme expliqué dans l'entrée manuelle pour
DATE_ADD():Dans votre cas, car
table1.timest unTIMEvaleur, la fonction renvoie une chaîne.La chaîne est renvoyée dans le jeu de caractères et le classement donnés par
character_set_connectionetcollation_connection. -
Comme expliqué dans l'entrée manuelle pour
TIME():La chaîne est renvoyée sous la forme d'une chaîne binaire (pourquoi ne pas utiliser le jeu de caractères de connexion et la collation me dépasse, peut-être un bogue ?).
-
Comme expliqué dans l'entrée manuelle pour Conversion de type dans l'évaluation d'expression :
Par conséquent, la comparaison entreprise est une comparaison de chaînes, mais le
binarystring ne peut pas être contraint à un classement approprié pour la comparaison (car son encodage n'est pas connu). D'où l'erreur dont vous êtes témoin.
On pourrait forcer la comparaison à être effectuée correctement en casting
un ou les deux opérandes, mais je serais tenté de retravailler la clause afin que la conversion ait lieu implicitement à partir de la comparaison avec un TIME saisissez :
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim