2012-08-04 202 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脚本。