Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql sql:根据最早日期排序日期_Mysql_Sql_Sorting - Fatal编程技术网

Mysql sql:根据最早日期排序日期

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 这

我在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条,根据需要对其进行排序:

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 ))