php按时间顺序排序的日期和时间

时间:2012-08-21 05:27:17

标签: php mysql date sorting time

我尝试了以下查询以获取最新评论。

SELECT u.id, comments, DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time FROM mytable m INNER JOIN users u ON m.added_by = u.id

UNION

SELECT c.id comments, DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time FROM mytable m INNER JOIN contacts c ON m.added_by = c.id
ORDER BY comment_date_time desc;

但我得到的是'comment_date':

2012年16月16日上午12:58

2012年11月18日上午12:05

2012年8月8日下午11:54

2012年4月16日上午01:38

这里的comment_date是DATETIME。

目前正在单独排序日期和时间,如

DATE_FORMAT(comment_date, '%h:%i%p') AS comment_time
DATE_FORMAT(comment_date, '%m-%d-%Y') AS comment_date

有没有更好的解决方案?

由于

1 个答案:

答案 0 :(得分:2)

您的查询是正确的。但您需要将其排序到原始列(comment_date),因为其数据类型为datetime。你所做的是你的alias的名字命名,现在是string。试试这个,

SELECT id, comments, comment_date_time
FROM
(
SELECT u.id, comments, 
       DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time,
       comment_date
FROM mytable m INNER JOIN users u ON m.added_by = u.id
UNION
SELECT c.id comments, 
       DATE_FORMAT(comment_date, '%h:%i%p on %m-%d-%Y') AS comment_date_time,
       comment_date
FROM mytable m INNER JOIN contacts c ON m.added_by = c.id
) x
ORDER BY x.comment_date desc;