2012-04-17 129 views
4

我目前遇到了使用date_format的數據列排序結果的問題。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 

日期現在出錯o刻申

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

我也試着運行查詢 SELECT DATE_FORMAT(date,'%d-%m-%Y')爲date ORDER BY DATE_FORMAT(date,'%d-%m-%Y')但沒有任何區別。

我怎樣才能得到這個排序正確的順序。

回答

8

問題是您正在使用別名覆蓋列名。

選擇另一個別名:

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

謝謝,我已經試過,但它仍然沒有工作。它看起來好像它在日期的第一部分,即一天,它沒有考慮這個月的唯一排序 – Boardy 2012-04-17 22:39:18

+0

@Boardy:不,你沒有做到這一點。您的查詢中有更多列或不同的內容。 – 2012-04-17 22:46:29

+0

對不起,我是一個數字我誤解你的代碼。我說的是date_formatted而不是日期。它現在工作正常。謝謝你的幫助。 – Boardy 2012-04-18 17:29:04

4

只爲列ORDER BY子句指定表名:

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

在這種情況下,MySQL的知道你想要的表列進行排序,而不是由你在SELECT部分已經評估表達

+0

對不起我的朋友 – 2012-04-17 22:32:46