MySQL查询按当前日期和月份排序?

为此,您可以使用ORDER BY CASE语句。让我们首先创建一个表-

create table DemoTable
(
   DueDate date
);

注意-假设当前日期为2019-07-22。

使用插入命令在表中插入一些记录-

insert into DemoTable values('2019-03-10');
insert into DemoTable values('2019-08-25');
insert into DemoTable values('2019-06-01');
insert into DemoTable values('2019-12-31');

使用select语句显示表中的所有记录-

select *from DemoTable;

这将产生以下输出-

+------------+
| DueDate    |
+------------+
| 2019-03-10 |
| 2019-08-25 |
| 2019-06-01 |
| 2019-12-31 |
+------------+
4 rows in set (0.00 sec)

以下是按日期和月份排序的查询-

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 |
+------------+
4 rows in set (0.00 sec)