我在 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
我怎样才能做到这一点?我尝试通过升序和降序使用顺序并进行了一些研究,但无法做到这一点。任何帮助将不胜感激。
答案 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