mysql डेटाटाइम तुलना




implicit-conversion explicit-conversion (2)

उदाहरण के लिए निम्न क्वेरी ठीक काम करती है:

SELECT * 
  FROM quotes 
 WHERE expires_at <= '2010-10-15 10:00:00';

लेकिन यह स्पष्ट रूप से 'स्ट्रिंग' तुलना कर रहा है - मैं सोच रहा था कि MySQL में कोई फ़ंक्शन बनाया गया था जो विशेष रूप से 'डेटाटाइम' तुलना करता है।


... यह स्पष्ट रूप से 'स्ट्रिंग' तुलना कर रहा है

नहीं - यदि दिनांक / समय प्रारूप समर्थित प्रारूप से मेल खाता है, तो MySQL मूल्य को उस डेटा के आधार पर परिवर्तित करने के लिए अंतर्निहित रूपांतरण करता है, जिसकी तुलना इसकी तुलना की जा रही है। वही बात होती है:

WHERE int_column = '1'

... जहां "1" का स्ट्रिंग मान एक INTeger में परिवर्तित हो जाता है क्योंकि int_column का डेटा प्रकार INT है, CHAR / VARCHAR / टेक्स्ट नहीं है।

यदि आप स्ट्रिंग को DATETIME में स्पष्ट रूप से रूपांतरित करना चाहते हैं, तो STR_TO_DATE फ़ंक्शन सबसे अच्छा विकल्प होगा:

WHERE expires_at <= STR_TO_DATE('2010-10-15 10:00:00', '%Y-%m-%d %H:%i:%s')

लेकिन यह स्पष्ट रूप से 'स्ट्रिंग' तुलना कर रहा है

नहीं। स्ट्रिंग स्वचालित रूप से DATETIME मान में डाली जाएगी।

11.2 देखें अभिव्यक्ति मूल्यांकन में रूपांतरण टाइप करें।

जब ऑपरेटर को विभिन्न प्रकार के संचालन के साथ प्रयोग किया जाता है, तो ऑपरेशन को संगत बनाने के लिए रूपांतरण प्रकार होता है। कुछ रूपांतरण अंतर्निहित होते हैं। उदाहरण के लिए, MySQL स्वचालित रूप से संख्याओं को आवश्यकतानुसार तारों में परिवर्तित करता है, और इसके विपरीत।





explicit-conversion