Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

दिनांक/समय की तुलना के लिए संचालन के लिए कॉलेशन का अवैध मिश्रण

  1. जैसा कि DATE_ADD() :

    आपके मामले में, क्योंकि table1.tim एक समय है मान, फ़ंक्शन एक स्ट्रिंग लौटा रहा है।

    स्ट्रिंग को <द्वारा दिए गए वर्ण सेट और संयोजन में लौटाया जाता है। कोड>character_set_connection और collation_connection

  2. जैसा कि TIME के ​​लिए मैन्युअल प्रविष्टि में बताया गया है () :

    स्ट्रिंग को बाइनरी स्ट्रिंग के रूप में वापस किया जाता है (कनेक्शन कैरेक्टर सेट और कॉलेशन का उपयोग क्यों नहीं करना मेरे से परे है-शायद एक बग?)।

  3. जैसा कि अभिव्यक्ति मूल्यांकन में प्रकार रूपांतरण के लिए मैन्युअल प्रविष्टि में बताया गया है :

    इसलिए की गई तुलना एक स्ट्रिंग तुलना है, लेकिन बाइनरी स्ट्रिंग को तुलना के लिए उपयुक्त संयोजन के लिए मजबूर नहीं किया जा सकता है (क्योंकि इसकी एन्कोडिंग ज्ञात नहीं है)। इसलिए आप जो त्रुटि देख रहे हैं।

स्पष्ट रूप से कास्टिंग द्वारा तुलना को सही ढंग से संचालित करने के लिए बाध्य किया जा सकता है। एक या दोनों ऑपरेंड, लेकिन मैं सिर्फ क्लॉज को फिर से काम करने के लिए ललचाऊंगा ताकि रूपांतरण एक TIME की तुलना में परोक्ष रूप से हो। टाइप करें:

TIME(table1.dt1 - INTERVAL 1 MINUTE) <= table1.tim



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL-शैली प्रश्न चिह्न `?` बाध्य पैरामीटर को Postgres-style `$1` बाध्य पैरामीटर में कैसे बदलें

  2. मैं नोड-mysql प्रश्नों के बाद चेतावनियां कैसे ला सकता हूं?

  3. पाइथन लगभग एक दिन के बाद MySQL डेटाबेस से कनेक्शन खो देता है

  4. एनम ('हां', 'नहीं') बनाम टिनींट - किसका उपयोग करना है?

  5. क्या MySQL में तालिका परिभाषाओं के अंत में VARCHAR कॉलम रखे जाने चाहिए?