2013-05-12 116 views
3

我有一个查询,我试图按最上面的日期排序,最下面排在最前面的结果。这是查询按日期排序MySQL查询排序只有一天,而不是全日期

SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS date, 
name, logo, tpf_parks.park_id, url, alt, description 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
LEFT JOIN tpf_images ON tpf_news.news_id = tpf_images.news_id 
ORDER BY date DESC 

结果是有序的错误,虽然,它仅由这样的结果是有序的这样子日子排序是:25-march-2013, 23-april-2013, 19-febuary-2013, 10-may-2013等等。我认为它,因为这样我显示日期DATE_FORMAT(date, "%d-%M-%Y") AS date,但我不知道如何解决它。有任何想法吗?

回答

8

试试这个:

SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS Displaydate, 
    name, logo, tpf_parks.park_id, url, alt, description 
    FROM tpf_news 
    INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
    LEFT JOIN tpf_images ON tpf_news.news_id = tpf_images.news_id 
    ORDER BY date DESC 

这样,MySQL将被真正的日期字段顺序,以及应用程序代码会显示日期格式设置的方式,你希望它

3

重命名你的别名,它是暧昧

SELECT headline, story, DATE_FORMAT(date, "%d-%M-%Y") AS formatted_date, 
name, logo, tpf_parks.park_id, url, alt, description 
FROM tpf_news 
INNER JOIN tpf_parks ON tpf_news.park_id = tpf_parks.park_id 
LEFT JOIN tpf_images ON tpf_news.news_id = tpf_images.news_id 
ORDER BY date DESC 

然后数据库引擎可以使用date订购并知道差到原来的列和格式之一。