MySQL 查詢,用於根據當前日期對日期之間的差值進行排序並顯示


為此,請使用 ORDER BY 子句。當前日期如下 −

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2019-06-09 21:08:16 |
+---------------------+
1 row in set (0.00 sec)

讓我們先建立一個表 −

mysql> create table DemoTable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> DueDate datetime
   -> );
Query OK, 0 rows affected (0.62 sec)

使用 insert 命令在表中插入一些記錄 −

mysql> insert into DemoTable(DueDate) values('2019-06-12');
Query OK, 1 row affected (0.24 sec)

mysql> insert into DemoTable(DueDate) values('2019-06-01');
Query OK, 1 row affected (0.37 sec)

mysql> insert into DemoTable(DueDate) values('2019-06-05');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(DueDate) values('2019-06-10');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable(DueDate) values('2019-06-11');
Query OK, 1 row affected (0.66 sec)

使用 select 語句顯示錶中的所有記錄: −

mysql> select *from DemoTable;

輸出

+----+---------------------+
| Id | DueDate             |
+----+---------------------+
| 1  | 2019-06-12 00:00:00 |
| 2  | 2019-06-01 00:00:00 |
| 3  | 2019-06-05 00:00:00 |
| 4  | 2019-06-10 00:00:00 |
| 5  | 2019-06-11 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)

以下是透過排序後的查詢得到日期差值並對日期進行排序。日期差值顯示在單獨的列中 −

mysql> select Id,DueDate,DATEDIFF(DueDate, CURDATE()) AS t from DemoTable
   -> order by CASE WHEN t < 0 THEN 1 ELSE 0 END, t;

輸出

+----+---------------------+------+
| Id | DueDate             | t    |
+----+---------------------+------+
| 4  | 2019-06-10 00:00:00 | 1    |
| 5  | 2019-06-11 00:00:00 | 2    |
| 1  | 2019-06-12 00:00:00 | 3    |
| 2  | 2019-06-01 00:00:00 | -8   |
| 3  | 2019-06-05 00:00:00 | -4   |
+----+---------------------+------+
5 rows in set (0.00 sec)

更新於: 30-07-2019

171 次瀏覽

啟動您的職業

完成課程並獲得認證

開始
廣告
© . All rights reserved.