gpt4 book ai didi

mysql - ORDER BY 日期在即将到来的日期之后的过去日期

转载 作者:可可西里 更新时间:2023-11-01 06:32:08 31 4
gpt4 key购买 nike

我需要对 MySql 数据库中的表执行查询,结果行的顺序如下所示:

如果今天是 2012 年 10 月 9 日:

...
11/09/12
12/09/12
15/09/12
08/09/12 <--here start the past dates
07/09/12
05/09/12
....

有没有办法直接在 MySQL 中实现这个?


我是这样解决的:

首先,select 语句包含一个新的 bool 值,用于标记日期是过去还是 future :

SELECT DISTINCT *,CASE  WHEN startdate < CURDATE() THEN 0
ELSE 1 END AS past_or_future

其次,我做了两次“订购依据”:首先是 past_or_future bool 值,然后是日期,条件如下:

ORDER BY past_or_future  DESC , CASE WHEN past_or_future  = 1 THEN startdate END ASC, CASE WHEN past = 0 THEN startdate END DESC

通过这种方式,我首先获得了所有按日期排序的即将到来的日期(从低值到高)然后所有过去的日期从日期(从高到低)排序

最佳答案

即使在 ORDER BY 子句中,您仍然可以执行 CASE 语句,

SELECT *
FROM tableName
ORDER BY (CASE WHEN DATE(dateColumn) < DATE(GETDATE())
THEN 1
ELSE 0
END) DESC, dateColumn ASC

关于mysql - ORDER BY 日期在即将到来的日期之后的过去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12365246/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com