MySQL में CASE एक्सप्रेशन के साथ वर्तमान तिथि से भविष्य की तिथियों को पहले क्रमबद्ध करना
ORDER BY CASE का उपयोग करके कस्टम क्रमबद्ध तर्क लागू किया जा सकता है, जैसे वर्तमान तिथि से भविष्य की तिथियों को पहले, फिर अतीत की तिथियों को क्रमबद्ध करना।
व्यावहारिक उदाहरण
तालिका बनाना
mysql> CREATE TABLE DemoTable (
DueDate DATE
);
नोट: मान लें वर्तमान तिथि 2019-07-22 है।
रिकॉर्ड डालना
mysql> INSERT INTO DemoTable VALUES('2019-03-10');
mysql> INSERT INTO DemoTable VALUES('2019-08-25');
mysql> INSERT INTO DemoTable VALUES('2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-12-31');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+------------+ | DueDate | +------------+ | 2019-03-10 | | 2019-08-25 | | 2019-06-01 | | 2019-12-31 | +------------+
भविष्य की तिथियां पहले, फिर अतीत की तिथियां क्रमबद्ध करने के लिए क्वेरी
mysql> SELECT * FROM DemoTable ORDER BY CASE WHEN DueDate > CURDATE() THEN 0 ELSE 1 END, DueDate;
आउटपुट:
+------------+ | DueDate | +------------+ | 2019-08-25 | | 2019-12-31 | | 2019-03-10 | | 2019-06-01 | +------------+
व्याख्या
CASE WHEN DueDate > CURDATE() THEN 0 ELSE 1 END- भविष्य की तिथि = 0, अतीत/आज = 10पहले आता है (आरोही क्रम डिफ़ॉल्ट)- दूसरा क्रमबद्ध:
DueDate- प्रत्येक समूह के भीतर तिथि क्रम
वेरिएंट: महीने और दिन के अनुसार (वर्ष अनदेखा करके)