ORDER BY में DATE और TIME कॉलम
MySQL में अलग-अलग DATE और TIME कॉलम को मिलाकर **अवरोही क्रम (descending)** में सॉर्ट करने के लिए ORDER BY में दोनों कॉलम निर्दिष्ट करें।
उदाहरण सेटअप
mysql> CREATE TABLE SortByDateAndTime (
-> UserId INT,
-> UserName VARCHAR(100),
-> IssueDate DATE,
-> IssueTime TIME
-> );
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO SortByDateAndTime VALUES
-> (1, 'John', '2018-12-16', '10:30'),
-> (2, 'Bob', '2018-12-16', '10:10'),
-> (3, 'Carol', '2018-12-16', '10:20'),
-> (4, 'Sam', '2018-12-16', '10:00');
मूल डेटा
mysql> SELECT * FROM SortByDateAndTime;
+--------+----------+------------+-----------+
| UserId | UserName | IssueDate | IssueTime |
+--------+----------+------------+-----------+
| 1 | John | 2018-12-16 | 10:30:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 4 | Sam | 2018-12-16 | 10:00:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)
केस 1: दिनांक DESC, समय DESC (नवीनतम पहले)
mysql> SELECT UserId, UserName, DATE(IssueDate) AS date1, IssueTime
-> FROM SortByDateAndTime
-> ORDER BY DATE(IssueDate) DESC, IssueTime DESC;
+--------+----------+------------+-----------+
| UserId | UserName | date1 | IssueTime |
+--------+----------+------------+-----------+
| 1 | John | 2018-12-16 | 10:30:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 4 | Sam | 2018-12-16 | 10:00:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)
केस 2: दिनांक DESC, समय ASC (पुराना समय पहले)
mysql> SELECT UserId, UserName, DATE(IssueDate) AS date1, IssueTime
-> FROM SortByDateAndTime
-> ORDER BY DATE(IssueDate) DESC, IssueTime ASC;
+--------+----------+------------+-----------+
| UserId | UserName | date1 | IssueTime |
+--------+----------+------------+-----------+
| 4 | Sam | 2018-12-16 | 10:00:00 |
| 2 | Bob | 2018-12-16 | 10:10:00 |
| 3 | Carol | 2018-12-16 | 10:20:00 |
| 1 | John | 2018-12-16 | 10:30:00 |
+--------+----------+------------+-----------+
4 rows in set (0.00 sec)
सिंगल DATETIME कॉलम के लिए
यदि एक DATETIME कॉलम है:
SELECT * FROM Events ORDER BY EventDateTime DESC;
महत्वपूर्ण: DATE() फ़ंक्शन इंडेक्स को प्रभावित कर सकता है
कॉलम पर फ़ंक्शन (DATE(col)) लगाने से इंडेक्स उपयोग रुक सकता है। बेहतर:
-- यदि IssueDate DATE प्रकार है:
ORDER BY IssueDate DESC, IssueTime DESC
-- यदि DATETIME है:
ORDER BY EventDateTime DESC
मिश्रित ASC/DESC पैटर्न
-- नवीनतम दिनांक, लेकिन प्रत्येक दिन का सबसे पहला समय
ORDER BY IssueDate DESC, IssueTime ASC
-- सबसे पुराना दिनांक, लेकिन प्रत्येक दिन का नवीनतम समय
ORDER BY IssueDate ASC, IssueTime DESC