MySQL:如何用RFC112格式对日期进行排序?

时间:2012-04-22 10:37:33

标签: mysql sql date format sql-order-by

例如,我的表date上有一个名为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”首先出现。

如何更正此命令?

2 个答案:

答案 0 :(得分:2)

您需要将字符串解析为日期时间才能正确排序。

使用您的格式,您可以尝试这样的事情:

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字段类型并在select(date_format http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format)中设置日期格式以满足您的要求。

答案 1 :(得分:0)

SELECT * 
FROM  post 
ORDER BY STR_TO_DATE(datestr, '%a, %d %b %Y %T') ASC