2012-04-17 14 views
4

現在、date_formatを使用しているデータ列で結果をソートする際に問題が発生しています。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 

日付は間違っていますo RDER

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

私は ORDER BY DATE_FORMAT(日付、 '%d-%m-%Y')というようにクエリDを実行しようとしましたが、違いはありませんでした。

これを正しい順序で並べ替えるにはどうすればよいですか。

答えて

8
SELECT一部で評価しまし式でソートしたい知っています

問題は、列名を別名で上書きしていることです。

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

おかげで、私はこれを試してみたが、そのはまだ動作していない:

別の別名を選択します。それは、その日付の最初の部分、すなわちその日だけを考慮して月を考慮していないそのようなものであるかのように見えます。 – Boardy

+0

@Boardy:いいえ、あなたはこれを正確にやっていません。あなたは列が増えているか、クエリーで何かが違っています。 –

+0

申し訳ありません私はあなたのコードを誤読していました。私はdateの代わりにdate_formattedによる注文を言っていました。今はうまくいく。ご協力いただきありがとうございます。 – Boardy

4

だけORDER BY句の列のテーブル名を指定します。この場合、MySQLで

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

は、テーブルの列ではなく、あなたが

+0

申し訳ありません私の友人 –

関連する問題