sql:根据最早的日期对日期进行排序

时间:2021-05-21 18:44:40

标签: mysql sql sorting

我在 MySQL 中有一个列名结束日期,它以“月-日-年”格式存储日期。我有以下数据:

2/25/2021
2/26/2021
3/10/2021
3/21/2021 <- Today's date
3/22/2021
3/25/2021
3/29/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

我怎样才能做到这一点?我尝试通过升序和降序使用顺序并进行了一些研究,但无法做到这一点。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以order by 语句/逻辑,而不仅仅是列。因此,您可以使用以下内容:

ORDER BY theDate = CURDATE() DESC

这应该将当前日期放在顶部。至于其他的,您可以添加第二个子句以根据需要对它们进行排序:

ORDER BY theDate = CURDATE() DESC, theDate DESC

更新:如果您首先想要当前日期,然后是未来日期,然后是其他所有日期,您只需添加一个 > CURDATE()

ORDER BY theDate = CURDATE() DESC,
    theDate > CURDATE() DESC,
    theDate ASC

更新 2:这可以使用 >= CURDATE() 简化。谢谢,@jarlh

ORDER BY theDate >= CURDATE() DESC, theDate