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

标签 mysql sql date format sql-order-by

例如,我有一个名为 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/

相关文章:

mysql - 用于查找最近位置的 Google Sql 查询不起作用

PHP 从 MYSql View 中选择不返回任何内容

php - php/mysql 函数的奇怪行为

mysql - 如何在 GROUP BY 子句上使用别名?

php - MySQL 查询 - 检索仅包含字母和空格的行

mysql - MySQL 中的哈希索引算法

sql - 为什么 ISNUMERIC (',' ) 是真的?

java - 在java中用AEDT和AEST时区解析日期

ruby-on-rails-3 - 带日期的 Rails 路线

JQuery Datepicker 日期格式 - 如何从 dd/mm/yyyy 更改为 dd/mm/yy?