例如,我有一个名为 date
的列在我的 table 上 post
我想在 ascending
中对其进行排序.
在我的 date
列我用RCF112格式填充,例如:Sun, 22 APR 2012 5:21:22
.
首先我从这个命令开始:
SELECT *
FROM post
ORDER BY date ASC
但结果似乎不正确,因为它是根据其字符串排序的,例如。 Sun, 15 APR 2012
将早于 Wed,11 APR 2012
因为“Sun”以“S”开头,按字母顺序在“W”之前,所以“Sun, 15 APR 2012”首先出现。
如何更正此命令?
最佳答案
您需要将字符串解析为日期时间才能正确排序。
使用你的格式,你可以尝试这样的事情:
STR_TO_DATE('Sun, 22 APR 2012 5:21:22', '%a, %e %b %Y %h:%i:%S')
创建日期 2012-04-22 05:21:22
。
因此,您的查询应如下所示:
SELECT *
FROM post
ORDER BY
STR_TO_DATE(date, '%a, %e %b %Y %h:%i:%S')
ASC
正如其他人可能已经建议的那样,您可以使用 datetime
字段类型并在选择中设置日期格式 (date_format
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format ) 以满足您的要求。
关于MySQL:如何使用RFC112格式对日期进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10267226/