MySQL में STR_TO_DATE() के साथ VARCHAR तिथियों पर तिथि तुलना करना
जब तिथियां VARCHAR कॉलम में गैर-मानक फॉर्मेट में संग्रहीत होती हैं, तो STR_TO_DATE() का उपयोग WHERE क्लॉज में करके उन्हें तिथि के रूप में तुलना किया जा सकता है।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
DueDate VARCHAR(100)
);
DD/MM/YYYY फॉर्मेट में तिथि डालना
mysql> INSERT INTO DemoTable VALUES('21/10/2018');
mysql> INSERT INTO DemoTable VALUES('18/08/2019');
mysql> INSERT INTO DemoTable VALUES('01/12/2012');
mysql> INSERT INTO DemoTable VALUES('31/01/2016');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------------+ | DueDate | +------------+ | 21/10/2018 | | 18/08/2019 | | 01/12/2012 | | 31/01/2016 | +------------+
2010-01-31 के बाद की तिथियां खोजने के लिए क्वेरी
mysql> SELECT * FROM DemoTable WHERE STR_TO_DATE(DueDate, '%d/%m/%Y') > '2010-01-31';
आउटपुट:
+------------+ | DueDate | +------------+ | 21/10/2018 | | 18/08/2019 | | 01/12/2012 | | 31/01/2016 | +------------+
फॉर्मेट स्पेसिफायर्स
| स्पेसिफायर | अर्थ |
|---|---|
| %d | दिन (01-31) |
| %m | महीना (01-12) |
| %Y | 4 अंकों वाला वर्ष |
| %M | महीने का पूरा नाम |
| %W | सप्ताह का पूरा नाम |
प्रदर्शन विचार
STR_TO_DATE()हर पंक्ति के लिए चलता है → पूर्ण तालिका स्कैन- बड़े तालिकाओं के लिए, एक DATE कॉलम जोड़ें और उसे इंडेक्स करें
- या जेनरेटेड कॉलम का उपयोग करें (MySQL 5.7+):