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 に答える