在我的SQL查询中,我按时间顺序输出日期。
我的数据库中的日期以d-M-Y格式存储。
我想要做的是按照等于或大于今天的日期对结果进行排序,然后先输出。
在我的查询中,我在查询中有这种
...From $db ORDER BY STR_TO_DATE(sortdate, '%d-%M-%Y') ASC
有人可以告诉我,如果我可以在今天的日期进行比较,因为每条记录都是从数据库输出的吗?
这将给我今天的日期
$todaysdate = date("d-M-Y", time());
但有人能告诉我是否可以将其构建到我的查询中吗?
提前致谢。
答案 0 :(得分:2)
结合DATEDIFF
==>检查mysql CURRENT_DATE
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_current-date
答案 1 :(得分:1)
您确实应该以dateTime格式存储日期。这将使很多更容易做各种订单,比较和许多其他事情。例如,您可以使用mysql now()
函数来获取所需的结果吗?
...From $db where sortDate>=now() ORDER BYsortdate ASC
答案 2 :(得分:1)
我的猜测是你在VARCHAR列中保存了日期。请不要这样做,当你想用日期做事(比如这样)时,你会让自己变得非常复杂。我建议您将列转换为DATE字段,然后使用:
SELECT * FROM my_table WHERE my_date_field >= CURDATE()
如果您想以d-m-Y格式输出日期,可以使用DATE_FORMAT()
答案 3 :(得分:1)
假设sortdate是datetime字段,为了首先显示等于或大于今天的日期,可以使用UNION。
SELECT * FROM my_table WHERE sortdate>= CURDATE()
UNION
SELECT * FROM my_table WHERE sortdate< CURDATE()
答案 4 :(得分:0)
您可以使用WHERE sortdate >= $todaysdate
答案 5 :(得分:0)
只需将此条件置于date_column&gt; = curdate()/ $ todaysdate
之类的地方感谢