2012-06-07 66 views
1

我想從varchar(255)類型的表desc(format mm/dd/yyyy)中排序記錄。Mysql查詢不工作 - 按日期排序

按日期

SELECT *, DATE_FORMAT(date,'%m/%d/%Y') AS reldate FROM table ORDER BY reldate DESC 

這不是working.For日期= 2009年3月28日,reldate回報NULL.I'm在MySQL初學者,所以我真的不知道如何解決這個。

謝謝。

+0

是否有任何理由爲什麼reldate是類型varchar而不是datetime? –

回答

1

(我可能會誤解你的問題。是日期列日期或VARCHAR?我的回答是基於它的VARCHAR,這是我理解的假設。)

我覺得功能你之後是STR_TO_DATE,而不是DATE_FORMAT。 DATE_FORMAT實際上與你所期望的相反;它從一個日期到一個字符串,而你試圖從一個字符串去日期。

更大的問題是,爲什麼這個數據在第一個VARCHAR列?

+0

似乎任何一種方式OP將不得不將其轉換爲日期,然後回到格式lol的字符串。 –

+0

如果它已經是一個日期,不需要ORDER BY沒有任何轉換需要嗎? – Shoaib

+0

我沒有說這是一個約會。 –

0

您可能必須將date轉換爲datetime類型,然後才能在該函數中使用它。嘗試:

SELECT *, DATE_FORMAT(CAST(`date` AS DATETIME),'%m/%d/%Y') AS reldate 
FROM table ORDER BY reldate DESC 

我把反引號,像我一樣,周圍的date場在你的查詢,以避免任何可能保留字衝突。
正如其他人所提到的,這個字段首先應該是一個datetime列類型。