我有一个关于如何在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中做?
答案 0 :(得分:7)
只需按逗号后的部分排序:
order by substring_index(date, ',', -1)
答案 1 :(得分:1)
Mysql Date format function & order
您可以将原始日期列设置为DATE类型,并可以将日期列的字符串格式创建为别名,并使用原始日期列对其进行排序。在上面的链接中给出的更清楚,希望这有帮助。
答案 2 :(得分:0)
听起来像是你在日期栏中使用了错误的类型。您是否在日期列中使用DATE或DATETIME或varchar?如果将其切换到DATE,ASC和DESC将正常工作。
答案 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;