MySQL में DATE() फ़ंक्शन और CURDATE() का उपयोग करके DATETIME कॉलम से केवल दिनांक भाग की तुलना करके आज की दिनांक वाले रिकॉर्ड को बाहर करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> Name VARCHAR(100),
-> DueDate DATETIME
-> );
Query OK, 0 rows affected (0.54 sec)
मान लें वर्तमान दिनांक 2019-07-03 है:
mysql> INSERT INTO DemoTable VALUES
-> ('Chris', '2019-06-24'),
-> ('Chris', '2018-01-01'),
-> ('Robert', '2019-07-03'), -- आज
-> ('Carol', '2019-08-03');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+--------+---------------------+ | Name | DueDate | +--------+---------------------+ | Chris | 2019-06-24 00:00:00 | | Chris | 2018-01-01 00:00:00 | | Robert | 2019-07-03 00:00:00 | | Carol | 2019-08-03 00:00:00 | +--------+---------------------+ 4 rows in set (0.00 sec)
आज की दिनांक को छोड़कर सभी रिकॉर्ड चुनना
mysql> SELECT * FROM DemoTable WHERE DATE(DueDate) != CURDATE();
आउटपुट
+-------+---------------------+ | Name | DueDate | +-------+---------------------+ | Chris | 2019-06-24 00:00:00 | | Chris | 2018-01-01 00:00:00 | | Carol | 2019-08-03 00:00:00 | +-------+---------------------+ 3 rows in set (0.00 sec)
व्याख्या:
DATE(DueDate)- DATETIME से केवल दिनांक भाग निकालता है (समय हटाता है)CURDATE()- वर्तमान दिनांक लौटाता है (समय के बिना)!=- तुलना ऑपरेटर (या<>)
वैकल्पिक दृष्टिकोण:
-- रेंज तुलना (इंडेक्स उपयोग के लिए बेहतर) WHERE DueDate < CURDATE() OR DueDate >= DATE_ADD(CURDATE(), INTERVAL 1 DAY) -- या WHERE DueDate NOT BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY)
रेंज तुलना DueDate पर इंडेक्स का उपयोग करने की अनुमति देती है, जबकि DATE(DueDate) फ़ंक्शन इंडेक्स उपयोग को रोकता है।