-
Như đã giải thích trong mục nhập thủ công cho
DATE_ADD()
:Trong trường hợp của bạn, vì
table1.tim
làTIME
giá trị, hàm đang trả về một chuỗi.Chuỗi được trả về trong bộ ký tự và đối chiếu được cung cấp bởi
character_set_connection
vàcollation_connection
. -
Như đã giải thích trong mục nhập thủ công cho
TIME()
:Chuỗi được trả về dưới dạng chuỗi nhị phân (tại sao tôi không sử dụng bộ ký tự kết nối &đối chiếu — có lẽ là lỗi?).
-
Như đã giải thích trong mục thủ công cho Nhập Chuyển đổi trong Đánh giá Biểu thức :
Do đó, so sánh được thực hiện là so sánh chuỗi, nhưng là
binary
chuỗi không thể bị ép buộc vào một đối chiếu thích hợp để so sánh (vì mã hóa của nó không được biết). Do đó, lỗi mà bạn đang chứng kiến.
Người ta có thể buộc việc so sánh được tiến hành chính xác bằng cách truyền
một cách rõ ràng một hoặc cả hai toán hạng, nhưng tôi chỉ muốn làm lại mệnh đề để chuyển đổi diễn ra hoàn toàn so với một TIME
loại:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim