通过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。
我只能认为我以某种方式错误地设置了我的查询,但我没有看到我出错的地方。
答案 0 :(得分:2)
%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
。