Date_Format并按日期排序

时间:2012-04-17 22:25:29

标签: mysql

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

我有以下日期:

  • 12年12月3日
  • 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年12月3日

执行查询时

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

我也尝试过运行查询 选择DATE_FORMAT(日期,'%d-%m-%Y')为date ORDER BY DATE_FORMAT(日期,'%d-%m-%Y'),但没有任何区别。

如何才能按正确顺序排序。

2 个答案:

答案 0 :(得分:10)

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

选择其他别名:

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

答案 1 :(得分:5)

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

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

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