mysql - 如何按大于 DATE(NOW()) 的列日期排序?

标签 mysql sql

我有一个 date_end 列,我需要对其进行排序,其中仅对日期大于今天的顶行很重要。

所以给出大于今天的日期 = "1",小于今天 = "0"并对其进行排序。

所以有下面的数据表:

+----+------------+ 
| id | date_end   |  
+----+------------+ 
| 1  | 31-01-2018 |  
+----+------------+ 
| 2  | 01-05-2019 |  
+----+------------+ 
| 3  | 31-05-2018 |  
+----+------------+ 
| 4  | 31-07-2019 |  
+----+------------+ 
| 5  | 31-04-2020 |  
+----+------------+ 
| 6  | 31-08-2019 |  
+----+------------+ 

我需要虚拟地添加“实际”列并按它排序:

+----+------------+--------+
| id | date_end   | actual |
+----+------------+--------+
| 1  | 31-01-2018 | 0      |
+----+------------+--------+
| 2  | 01-05-2019 | 0      |
+----+------------+--------+
| 3  | 31-05-2018 | 0      |
+----+------------+--------+
| 4  | 31-07-2019 | 1      |
+----+------------+--------+
| 5  | 31-04-2020 | 1      |
+----+------------+--------+
| 6  | 31-08-2019 | 1      |
+----+------------+--------+

类似于: 按情况排序 WHEN date_end > DATE(NOW()) THEN 1 ELSE 2 END

最佳答案

然后完全按照你的建议做:

ORDER BY CASE WHEN date_end > curdate() THEN 1 ELSE 0 END

关于mysql - 如何按大于 DATE(NOW()) 的列日期排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56743602/

相关文章:

php - 使用大小写限制 2 查询 MySQL

php - 根据变量是否存在插入或更新记录

java - 无法在 Java 中执行 "like"查询

sql - T-SQL 计算一年中第一个 ISO 周的第一个星期一,并将所有周枚举为“从-到”期间

javascript - PHP 查询数组到 Javascript Google map 迭代器

mysql - 为什么当我构建 Mysql 查询时我的变量不能正确插入?

mysql - 如何对 "N-nearest neighbors?"执行多维搜索

php - 无效对象或资源 mysqli_stmt 错误

java - 当 where 子句条件可以为 null 时更新 SQL

sql - 确保两列仅包含来自同一子查询的有效结果