对使用日/月/年格式的 MySQL 日期进行排序


Sorting MySQL date that uses day/month/year format

我正在使用一些房地产列表数据,MLS决定使用日/月/年格式作为其上市日期。

我希望能够执行按列出的日期排序的查询。如果我使用 ORDER BY 子句,它将不起作用,因为日是第一个数字,它基本上按天对它们进行排序,无论年、月等。

例如:- 02/12/2015(2015 年 12 月

12 日)将早于 05/01/2015(2015 年 1 月 5 日)。我能想到的唯一解决方案是遍历每个条目并重新排列日期格式。

但在我这样做之前,有没有办法在当前日/月/年格式上使用 ORDER BY 子句进行 sql 查询?

只需先将字符串转换为日期:

ORDER BY STR_TO_DATE(yourdatefield, '%m/%d/%Y')

请注意,此查询不会使用索引,并且在大型数据库上,性能将受到影响。我建议(如果您正在寻找速度),重新格式化数据库中的此字段,并更新受影响的代码。

UPDATE table
SET yourdatefield = STR_TO_DATE(yourdatefield, '%m/%d/%Y')

然后,确保前端正确显示内容。您可以使用日期格式功能将传出日期格式化为所需的格式。

试试这个

ORDER BY STR_TO_DATE(CONCAT_WS('-',day,month,year), '%d/%m/%Y')