MySQL条目按日期排序错误

时间:2012-08-04 08:46:05

标签: php mysql date sql-order-by

通过PHP使用MySQL SELECT查询,我想按日期订购我的条目。我正在使用的查询是:

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

我有四个条目:2012年7月24日,2012年1月7日,2012年5月6日和10月4日,并希望它们按顺序显示,但它们显示为:24 / 7 / 2012,10 / 4 / 2010,5 / 6/2012和1/7/2012。

我只能认为我以某种方式错误地设置了我的查询,但我没有看到我出错的地方。

3 个答案:

答案 0 :(得分:2)

DATE_FORMAT中的

%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";

答案 1 :(得分:1)

您已使用现有列定义了具有相同名称的列别名。因此,排序基于DATE_FORMAT函数而不是日期实际值。

作为一个好习惯,我建议从mysql查询中删除DATE_FORMAT函数,并将此部分保留到php脚本中。

答案 2 :(得分: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添加到所选列,请注意列别名不是date,而是formatted_date