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

时间:2015-06-10 14:53:27

标签: php mysql sorting

我有一个表格,里面有一个日期字段。 插入的项目的值是完整日期名称。

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

示例表

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。数据存储后是否可以更改?以上查询会自动对其进行正确排序吗?

2 个答案:

答案 0 :(得分:3)

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

效率低下的解决方案是:

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

这会将您的字符串转换为日期,然后对它们进行排序,但是必须对数据库中的每一行执行此操作,这可能会很麻烦。结论:如果您正在处理日期时间,请使用datetime字段。

答案 1 :(得分:1)

您需要将日期存储为日期时间或时间戳字段。我建议使用时间戳字段,这样您就可以轻松地将其格式化为检索它时所需的任何内容。