0

通过 PHP使用 MySQLSELECT查询,我想按日期排序我的条目。我正在使用的查询是:

$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、1/7/2012、5/6/2012 和 10/4/2012,并希望它们按该顺序显示,但它们显示为:24/7/ 2012 年、2010 年 10 月 4 日、2012 年 5 月 6 日和 2012 年 1 月 7 日。

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

4

3 回答 3

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";
于 2012-08-04T08:51:42.770 回答
1

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

作为一个好的做法,我建议从 mysql 查询中删除 DATE_FORMAT 函数,并将这部分留给您的 php 脚本。

于 2012-08-04T08:55:20.940 回答
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到选定的列,请注意列别名不是datebut formatted_date

于 2012-08-04T08:50:49.657 回答