MySQL条目按错误顺序排列按日期排序
问题描述:
使用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。
我只能认为我已经设置了我的查询不正确的方式,但我不明白我出了什么问题。
答
%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";
答
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
到选定的列,请注意,列别名不date
但formatted_date
。
答
您已经定义列别名使用与现有列相同的名称。因此,排序基于DATE_FORMAT函数而不是日期实际值。
作为一个很好的做法,我建议从mysql查询中删除DATE_FORMAT函数,并将这部分留给你的php脚本。
那里有什么'W'? – 2012-08-04 08:49:10
平日名称,即星期一,星期日。我是否认为它是按星期几名称排序,而不是按年份 - 月份排序? – Ryan 2012-08-04 08:50:40