6

我目前在按使用 date_format 的数据列对结果进行排序时遇到问题。

我有以下日期:

  • 12-03-12
  • 21-03-12
  • 25-03-12
  • 17-04-12

当我执行查询时:

SELECT date FROM myTable ORDER date DESC

日期以正确的顺序排列

  • 17-04-12
  • 25-03-12
  • 21-03-12
  • 12-03-12

当我执行查询时

SELECT DATE_FORMAT(date, '%d-%m-%Y') as `date` ORDER BY date

现在日期的顺序错误

  • 25-03-12
  • 21-03-12
  • 17-04-12
  • 17-03-12
  • 14-03-12

我也尝试运行查询 SELECT DATE_FORMAT(date, '%d-%m-%Y') as dateORDER BY DATE_FORMAT(date, '%d-%m-%Y') 但没有任何区别。

我怎样才能让它以正确的顺序排序。

4

2 回答 2

12

问题是您正在使用别名覆盖列名。

选择另一个别名:

SELECT DATE_FORMAT(`date`, '%d-%m-%Y') as date_formatted
FROM myTable 
ORDER BY `date` DESC
于 2012-04-17T22:28:07.710 回答
6

ORDER BY只需为子句中的列指定表名:

  SELECT DATE_FORMAT(date, '%d-%m-%Y') as `date`
    FROM myTable
ORDER BY myTable.`date` DESC -- <<<<<<

在这种情况下,mysql 知道您要按表列排序,而不是按您在SELECT部分中评估的表达式

于 2012-04-17T22:28:00.667 回答