MySQL发布日期从现在起3个月内开始,然后发布日期desc

时间:2017-11-17 00:46:36

标签: mysql date

我有一张如下表格。选择顺序需要从现在开始显示最接近的发布日期(更紧急),然后发布日期desc。说当前日期是17-11-2017

tblProduct

01-02-2016
09-05-2015
03-11-2017
30-11-2017
02-01-2018
09-06-2018

输出顺序应为

30-11-2017
02-01-2018
09-06-2018
03-11-2017
09-05-2015
01-02-2016

前2名在3个月内,所以首先显示(在2个结果之间,30-11-2017离现在更近,所以首先显示)。

什么是mysql查询?

1 个答案:

答案 0 :(得分:1)

我肯定不是最优雅的方式,但这可以帮到你

http://sqlfiddle.com/#!9/2a6eca/1

SELECT *, IF(mydate BETWEEN NOW() AND DATE_ADD( NOW() , INTERVAL +3 MONTH) , 1, 0) as `dateInRange`
FROM `demo`
ORDER BY  `dateInRange` DESC,
     CASE WHEN `dateInRange` = 1 THEN `mydate` END ASC,
     CASE WHEN `dateInRange` = 0 THEN `mydate` END DESC

这样做会在选择中添加另一列dateInRange(如果日期介于现在和现在的3个monts之间,则将其设置为1.

然后按部分顺序我们首先按此列排序(确保3个月范围内的所有日期都在顶部),当此列等于0时,我们按实际日期排序上升。如果此列为0,则按日期降序排序。 这段代码可以满足您的需求,但必须有一种更优雅的方式来实现这一目标。