繁体   English   中英

MYSQL PHP按日期对具有完整日期名称的表行进行排序

[英]MYSQL PHP Sorting table rows with Full date names by date

我有一个表,其中有一个日期字段。 插入项目的值有完整的日期名称。

如何按正确的日期对所选结果进行排序?

示例表

February 10, 2010
January 5, 2010
January 4, 2010
January 5, 2009
January 6, 2010
March 21, 2010

我想发生什么

January 5, 2009
January 4, 2010
January 5, 2010
January 6, 2010
February 10, 2010
March 21, 2010

是否有一个mysql函数呢?

这是我的查询。 日期字段命名为date

$sql = "SELECT * FROM `$table` ORDER BY date";

不幸的是,这仅按字母顺序对结果进行排序。 我应该如何修改/更改查询?

非常感谢您未来的见解和反馈! :)

更新

因此,问题在于该字段是string/varchar 存储数据后是否可以更改此设置? 上面的查询会自动对它正确排序吗?

这是因为数据库中的列设置为string / varchar ,而不是datetime字段。 有几种方法可以解决此问题,但最简单的方法是将您的字段转换为日期时间字段。

一种低效的解决方案是:

$sql = "SELECT * FROM `$table` ORDER BY STR_TO_DATE(`date`)";

这会将您的字符串转换为日期,然后对其进行排序,但是必须对数据库中的每一行都这样做,这可能会很麻烦。 底线:如果您正在使用日期时间,请使用datetime字段。

您需要将日期存储为datetime或timestamp字段。 我建议使用一个时间戳字段,这样您可以轻松地将其格式化为所需的格式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM