2

次のクエリを試して、最新のコメントを取得しました。

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年8月16日の午前0時58分

2012年8月21日の午前0時5分

2012年8月20日の午後11時54分

2012年8月16日の01:38AM

ここで、comment_dateはDATETIMEです。

現在、日付と時刻を次のように個別に並べ替えています。

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

より良い解決策はありますか?

ありがとう

4

1 に答える 1

2

あなたの質問は正しいです。comment_dateただし、データ型が。であるため、元の列()に並べ替える必要がありますdatetimealiasあなたがしたことはあなたの名前でそれを注文したことでした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;
于 2012-08-21T05:29:17.997 に答える