-
जैसा कि
DATE_ADD()
:आपके मामले में, क्योंकि
table1.tim
एकसमय
है मान, फ़ंक्शन एक स्ट्रिंग लौटा रहा है।स्ट्रिंग को <द्वारा दिए गए वर्ण सेट और संयोजन में लौटाया जाता है। कोड>character_set_connection और
collation_connection
। -
जैसा कि
TIME के लिए मैन्युअल प्रविष्टि में बताया गया है ()
:स्ट्रिंग को बाइनरी स्ट्रिंग के रूप में वापस किया जाता है (कनेक्शन कैरेक्टर सेट और कॉलेशन का उपयोग क्यों नहीं करना मेरे से परे है-शायद एक बग?)।
-
जैसा कि अभिव्यक्ति मूल्यांकन में प्रकार रूपांतरण के लिए मैन्युअल प्रविष्टि में बताया गया है :
इसलिए की गई तुलना एक स्ट्रिंग तुलना है, लेकिन
बाइनरी
स्ट्रिंग को तुलना के लिए उपयुक्त संयोजन के लिए मजबूर नहीं किया जा सकता है (क्योंकि इसकी एन्कोडिंग ज्ञात नहीं है)। इसलिए आप जो त्रुटि देख रहे हैं।
स्पष्ट रूप से कास्टिंग
द्वारा तुलना को सही ढंग से संचालित करने के लिए बाध्य किया जा सकता है। एक या दोनों ऑपरेंड, लेकिन मैं सिर्फ क्लॉज को फिर से काम करने के लिए ललचाऊंगा ताकि रूपांतरण एक TIME
की तुलना में परोक्ष रूप से हो। टाइप करें:
TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim