1

例如,我的表中有一个名为的列datepost我想将其排序为ascending.

在我的专栏中,我用RCF112格式date填充它,例如: .Sun, 22 APR 2012 5:21:22

首先我从这个命令开始:

SELECT * 
FROM  post 
ORDER BY date ASC

但结果似乎不正确,因为它是根据其字符串排序的,例如。Sun, 15 APR 2012将比旧,因为Wed,11 APR 2012“Sun”以字母开头的“W”开头的“S”开头,所以“Sun, 15 APR 2012”首先出现。

如何更正此命令?

4

2 回答 2

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

于 2012-04-22T10:50:13.393 回答
0
SELECT * 
FROM  post 
ORDER BY STR_TO_DATE(datestr, '%a, %d %b %Y %T') ASC
于 2012-04-22T10:53:53.217 回答