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




implicit-conversion explicit-conversion (3)

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

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

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

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

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

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')

मैं इसे बहुत पुराना जानता हूं लेकिन मुझे बस समस्या का सामना करना पड़ता है और मैंने SQL दस्तावेज़ में जो देखा है:

[तिथि या समय मानों के साथ BETWEEN का उपयोग करते समय सर्वोत्तम परिणामों के लिए,] मूल्यों को वांछित डेटा प्रकार में स्पष्ट रूप से रूपांतरित करने के लिए CAST () का उपयोग करें। उदाहरण: यदि आप दो दिनांक मानों के लिए DATETIME की तुलना करते हैं, तो DATE मान को DATETIME मानों में कनवर्ट करें। यदि आप DATE की तुलना में '2001-1-1' जैसी स्ट्रिंग स्थिरता का उपयोग करते हैं, तो स्ट्रिंग को DATE को डालें।

मुझे लगता है कि STR_TO_DATE का उपयोग करना बेहतर है क्योंकि उन्होंने केवल उस के लिए फ़ंक्शन बनाने के लिए समय निकाला था और यह भी तथ्य कि मैंने इसे बीटवेन दस्तावेज़ में पाया ...







explicit-conversion