MySQL तिथियों की date_format के साथ तुलना करना
कई तिथि तुलना विधियों का प्रयास करने के बावजूद, एक उपयोगकर्ता को एक अप्रत्याशित परिणाम का सामना करना पड़ा। उन्होंने '%d-%m-%Y' के रूप में स्वरूपित तिथियों की तुलना करने की मांग की, लेकिन परिणाम सेट में एक गलत रिकॉर्ड शामिल कर दिया।
समस्या तिथियों के बजाय स्ट्रिंग्स की तुलना करने से उत्पन्न होती है। date_format फ़ंक्शन दिनांकों को स्ट्रिंग्स में परिवर्तित करता है, जिससे तुलना को लेक्सिकोग्राफ़िक क्रम के लिए अतिसंवेदनशील बना दिया जाता है। उदाहरण के लिए, '28-10-2012' वर्णानुक्रम में '02-11-2012' से बड़ा है, इसलिए कालानुक्रमिक रूप से पहले होने के बावजूद इसे परिणाम सेट में शामिल किया गया है।
इसे हल करने के लिए, तुलना की जानी चाहिए स्ट्रिंग के बजाय दिनांक. दिनांक फ़ंक्शन का उपयोग DATETIME या DATE फ़ील्ड से दिनांक घटक निकालने के लिए किया जा सकता है। निकाली गई तिथियों की तुलना करके, कालानुक्रमिक क्रम सुनिश्चित किया जाता है।
उदाहरण के लिए:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
इस क्वेरी में, date(starttime) स्टार्टटाइम फ़ील्ड से तारीख निकालता है, जिसकी तुलना YYYY-MM में निर्दिष्ट तिथि से की जाती है -डीडी प्रारूप. date_format फ़ंक्शन का उपयोग केवल परिणाम को स्वरूपित करने के लिए किया जाता है। -%Y') डेटा से जहां प्रारंभ समय >= '2012-11-02 00:00:00';
यह क्वेरी बार-बार दिनांक रूपांतरण से बचती है क्योंकि तुलना सीधे DATETIME फ़ील्ड पर की जाती है।
याद रखें, आईएसओ -8601 मानक दिनांक प्रारूप के रूप में 'YYYY-MM-DD' का उपयोग करने की अनुशंसा करता है, लेकिन प्रदान किया गया कोड उपयोगकर्ता के निर्दिष्ट का पालन करता है '%d-%m-%Y' प्रारूप।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3