Mysql sql:根据最早日期排序日期
我在MySQL中有一个列名closing date,它以“月-日-年”的格式存储日期。我有以下数据:Mysql sql:根据最早日期排序日期,mysql,sql,sorting,Mysql,Sql,Sorting,我在MySQL中有一个列名closing date,它以“月-日-年”的格式存储日期。我有以下数据: 2/25/2021 2/26/2021 3/10/2021 3/21/2021 <- Today's date 3/22/2021 3/25/2021 3/29/2021 2/25/2021 2/26/2021 3/10/2021 2021年3月21日您可以按语句/逻辑排序,而不仅仅是列。因此,您可以使用以下内容: ORDER BY theDate = CURDATE() DESC 这
2/25/2021
2/26/2021
3/10/2021
3/21/2021 <- Today's date
3/22/2021
3/25/2021
3/29/2021
2/25/2021
2/26/2021
3/10/2021
2021年3月21日您可以按语句/逻辑排序,而不仅仅是列。因此,您可以使用以下内容:
ORDER BY theDate = CURDATE() DESC
这将使当前日期位于顶部。对于其他内容,您可以添加第2条,根据需要对其进行排序:
ORDER BY theDate = CURDATE() DESC, theDate DESC
更新:如果您希望先显示当前日期,然后是未来日期,然后是其他所有日期,则只需添加一个>CURDATE()
更新2:使用>=CURDATE()
可以简化此操作。谢谢
由于您同时显示了之前和之后的日期,因此可以在查询中添加ORDERBY子句,例如
order by
abs( datediff( curdate(), theDateColumn ))
因此,从3月21日起,3月25日可能显示为4天,但3月20日显示为1天。absolute()函数忽略+/-混淆,因此您应该能够获得所需的信息。首先将列更改为适当的date
数据类型。(使用char/varchar,不同的年份会很麻烦。还要计算日期差异。)您是否希望当前日期位于列表的顶部?其他日期如何排序?应该是这样的:即将到来的日期按升序排列,过去的日期最好也按升序排列在最后一条记录中。OP希望先有今天和未来的日期,然后是过去的日期。@jarlh我明白了。。。我想我可以解决这个问题:)orderbytheDate>=CURDATE()DESC,theDate
@jarlh我考虑过,但我不确定它是否会将当前日期放在第一位(使用=
)。
ORDER BY theDate = CURDATE() DESC,
theDate > CURDATE() DESC,
theDate ASC
ORDER BY theDate >= CURDATE() DESC, theDate
order by
abs( datediff( curdate(), theDateColumn ))