1

在我的 sql 查询中,我按时间顺序输出日期。

我数据库中的日期以 dMY 格式存储。

我想要做的是按等于或大于今天的日期对结果进行排序,以便首先输出。

在我的查询中,我的查询中有这种排序

...From $db ORDER BY STR_TO_DATE(sortdate, '%d-%M-%Y') ASC

谁能告诉我是否可以在今天的日期进行比较,因为每条记录都是从数据库输出的?

这会给我今天的日期

$todaysdate = date("d-M-Y", time());

但是谁能告诉我是否可以将其构建到我的查询中?

提前致谢。

4

6 回答 6

2

DATEDIFF结合CURRENT_DATE==> 检查mysql http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_current-date

于 2012-08-23T08:08:20.953 回答
1

您确实应该以 dateTime 格式存储日期。这将使执行各种订单、比较和许多其他事情变得更加容易例如,您可以使用 mysqlnow()函数仅获得您需要的结果吗?

...From $db where sortDate>=now() ORDER BYsortdate ASC
于 2012-08-23T08:08:32.070 回答
1

我的猜测是您将日期保存在 VARCHAR 列中。请不要那样做,当你想对日期做一些事情(像这样)时,你会让自己变得非常复杂。我建议您将该列转换为 DATE 字段,然后使用:

SELECT * FROM my_table WHERE my_date_field >= CURDATE()

如果你想以 dmY 格式输出日期,你可以使用 DATE_FORMAT()

于 2012-08-23T08:11:26.933 回答
1

假设 sortdate 是 datetime 字段,为了首先显示等于或大于今天的日期,可以使用 UNION。

SELECT * FROM my_table WHERE sortdate>= CURDATE()
UNION
SELECT * FROM my_table WHERE sortdate< CURDATE()
于 2012-08-23T08:16:51.777 回答
0

您可以使用WHERE sortdate >= $todaysdate

于 2012-08-23T08:10:08.637 回答
0

只需将此条件放在 date_column >= curdate()/$todaysdate 之类的位置

谢谢

于 2012-08-23T08:17:36.043 回答