2012-08-04 205 views
0

使用MySQL SELECT通過PHP查詢,我想按日期排序我的條目。我使用的查詢是:MySQL條目按錯誤順序排列按日期排序

$query = "SELECT title, file, oblong_pic, square_pic, 
DATE_FORMAT(date, '%W %d %M %Y') AS date 
FROM dyhamb ORDER BY date DESC"; 

我有四個條目日期:24/7/2012,2012年1月7日,2012年5月6日和10/4/2012,並希望他們能夠按順序顯示,但顯示爲:24/7/2012,10/4/2010,5/6/2012和1/7/2012。

我只能認爲我已經設置了我的查詢不正確的方式,但我不明白我出了什麼問題。

+0

那裏有什麼'W'? – 2012-08-04 08:49:10

+0

平日名稱,即星期一,星期日。我是否認爲它是按星期幾名稱排序,而不是按年份 - 月份排序? – Ryan 2012-08-04 08:50:40

回答

1

%W是平日的名字,如果你想使用最新的別名,你應該你的SQL查詢重寫如此排序與

開始:

$query = "SELECT title, file, oblong_pic, square_pic, date AS sort_date, 
DATE_FORMAT(date, '%W %d %M %Y') AS date 
FROM dyhamb ORDER BY sort_date DESC"; 
0

DATE_FORMAT返回字符串,因此您將其命名爲字符串,其中您使用的是%W,因此您首先按星期幾名稱排序。如果你想通過日期命令,然後只是這樣做:

SELECT title, file, oblong_pic, square_pic, date 
FROM dyhamb 
ORDER BY date DESC 

如果你真的想選擇格式化日期再加入DATE_FORMAT(date, '%W %d %M %Y') as formatted_date到選定的列,請注意,列別名不dateformatted_date

在DATE_FORMAT
1

您已經定義列別名使用與現有列相同的名稱。因此,排序基於DATE_FORMAT函數而不是日期實際值。

作爲一個很好的做法,我建議從mysql查詢中刪除DATE_FORMAT函數,並將這部分留給你的php腳本。