STR_TO_DATE() का उपयोग करके VARCHAR तिथि को DATE में बदलकर तुलना करना
तिथि तुलना के लिए STR_TO_DATE() का उपयोग करें। सिंटैक्स:
select * from yourTableName where str_to_date(yourColumnName, 'yourFormatSpecifier') > curdate();
पहले टेबल बनाएं:
mysql> create table DemoTable1397 ( AdmissionDate varchar(40) ); Query OK, 0 rows affected (0.97 sec)
रिकॉर्ड डालें:
mysql> insert into DemoTable1397 values('01/04/2019'); Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1397 values('27/09/2019'); Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1397 values('29/09/2018'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1397 values('29/09/2019'); Query OK, 1 row affected (0.08 sec)
सभी रिकॉर्ड देखें:
mysql> select * from DemoTable1397;
आउटपुट:
+---------------+ | AdmissionDate | +---------------+ | 01/04/2019 | | 27/09/2019 | | 29/09/2018 | | 29/09/2019 | +---------------+ 4 rows in set (0.00 sec)
पहले वर्तमान तिथि ज्ञात करें:
mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-09-27 | +------------+ 1 row in set (0.00 sec)
MySQL में VARCHAR तिथि की वर्तमान तिथि से तुलना करने की क्वेरी:
mysql> select * from DemoTable1397 where str_to_date(AdmissionDate, '%d/%m/%Y') > curdate();
परिणाम:
+---------------+ | AdmissionDate | +---------------+ | 29/09/2019 | +---------------+ 1 row in set (0.07 sec)
व्याख्या: STR_TO_DATE(AdmissionDate, '%d/%m/%Y') VARCHAR स्ट्रिंग को dd/mm/yyyy फॉर्मेट में पार्स करके DATE मान में बदलता है। फिर CURDATE() (वर्तमान तिथि 2019-09-27) के साथ तुलना करता है। केवल 29/09/2019 (2019-09-29) वर्तमान तिथि से बड़ा है। VARCHAR में तिथि संग्रहीत करना खराब अभ्यास है; DATE/TIMESTAMP डेटा प्रकार का उपयोग करें।