MySQL में NULL मानों वाली तिथि कॉलम को फ़िल्टर करना
जब तिथि कॉलम में NULL मान हों, तो तुलना ऑपरेटर्स का उपयोग करते समय सावधानी बरतनी पड़ती है क्योंकि NULL के साथ कोई भी तुलना UNKNOWN लौटाती है।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
FirstDate DATETIME,
SecondDate DATETIME
);
रिकॉर्ड डालना (कुछ NULL के साथ)
mysql> INSERT INTO DemoTable VALUES('2019-01-21', '2018-01-21');
mysql> INSERT INTO DemoTable VALUES('2019-10-04', '2019-08-14');
mysql> INSERT INTO DemoTable VALUES('2019-05-01', '2019-09-11');
mysql> INSERT INTO DemoTable VALUES(NULL, NULL);
mysql> INSERT INTO DemoTable VALUES('2019-03-01', NULL);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+---------------------+---------------------+ | FirstDate | SecondDate | +---------------------+---------------------+ | 2019-01-21 00:00:00 | 2018-01-21 00:00:00 | | 2019-10-04 00:00:00 | 2019-08-14 00:00:00 | | 2019-05-01 00:00:00 | 2019-09-11 00:00:00 | | NULL | NULL | | 2019-03-01 00:00:00 | NULL | +---------------------+---------------------+
वर्तमान तिथि के आधार पर फ़िल्टर करने के लिए क्वेरी
mysql> SELECT * FROM DemoTable WHERE FirstDate <= CURDATE() AND (SecondDate >= CURDATE() OR SecondDate IS NULL);
आउटपुट:
+---------------------+---------------------+ | FirstDate | SecondDate | +---------------------+---------------------+ | 2019-05-01 00:00:00 | 2019-09-11 00:00:00 | | 2019-03-01 00:00:00 | NULL | +---------------------+---------------------+
मुख्य बिंदु
SecondDate IS NULL- NULL मानों को स्पष्ट रूप से जांचता हैORऑपरेटर - दूसरी तिथि या तो भविष्य में होनी चाहिए या NULL- यह पैटर्न "सक्रिय" रिकॉर्ड खोजने के लिए उपयोगी है जहां समाप्ति तिथि वैकल्पिक है