我正在处理一些房地产列表数据,其中 MLS 决定使用日/月/年格式列出其上市日期。
我希望能够按列出的日期进行排序。如果我使用 ORDER BY子句它就不会工作,因为这一天是第一个数字,它基本上按天排序,无论年,月等等。
例如: - 2015年12月12日(2015年12月12日)将于05/01/2015(2015年1月5日)之前到来。我能想到的唯一解决方案是遍历每个条目并重新安排日期格式。
但在我这样做之前,有没有办法在当前日/月/年格式上使用 ORDER BY子句进行SQL查询?
答案 0 :(得分:2)
只需将字符串首先转换为日期:
ORDER BY STR_TO_DATE(yourdatefield, '%m/%d/%Y')
请注意,此查询不会使用索引,而在大型数据库上,性能会受到影响。我建议(如果您正在寻找速度),请在数据库中重新格式化此字段,并更新受影响的代码。
UPDATE table
SET yourdatefield = STR_TO_DATE(yourdatefield, '%m/%d/%Y')
然后,确保前端正确显示事物。您可以使用date format函数将传出日期格式化为您需要的格式。
答案 1 :(得分:0)
试试这个
ORDER BY STR_TO_DATE(CONCAT_WS('-',day,month,year), '%d/%m/%Y')