如何在mysql中对Date进行排序?

时间:2014-01-16 03:43:52

标签: php mysql

我有一个关于如何在mysql中对日期进行排序的问题。它可能听起来很愚蠢,因为order by date asc可以做到这一点。 在我的表中,日期实际上存储在字符串中,格式为例如Wed,2014-02-19。 假设我有一张如下表格。

id | user_id | date
1  |   38    | Wed,2014-02-19
2  |   38    | Wed,2014-02-26
3  |   38    | Wed,2014-02-12
4  |   38    | Wed,2014-02-05

对于上述情况,我仍然可以使用order by date asc进行排序,因为所有日期都是星期三。但是,让我们说其中一天有所不同,如下所示,

id | user_id | date
1  |   38    | Wed,2014-02-19
2  |   38    | Wed,2014-02-26
3  |   38    | Thu,2014-02-13
4  |   38    | Wed,2014-02-05

mysql将首先排序Thu,2014-02-13

无论如何要在mysql中做?

4 个答案:

答案 0 :(得分:7)

只需按逗号后的部分排序:

order by substring_index(date, ',', -1)

答案 1 :(得分:1)

Mysql Date format function & order

您可以将原始日期列设置为DATE类型,并可以将日期列的字符串格式创建为别名,并使用原始日期列对其进行排序。在上面的链接中给出的更清楚,希望这有帮助。

答案 2 :(得分:0)

听起来像是你在日期栏中使用了错误的类型。您是否在日期列中使用DATE或DATETIME或varchar?如果将其切换到DATE,ASC和DESC将正常工作。

参考:http://dev.mysql.com/doc/refman/5.5/en/datetime.html

答案 3 :(得分:0)

尝试使用STR_TO_DATE函数将日期字段从字符串转换为日期时间,如下所示:

SELECT id,user_id,STR_TO_DATE(date,'%W,%Y-%m-%d') AS new_date FROM 'table' ORDER BY new_date;