按降序选择日期

时间:2016-02-16 11:04:07

标签: php mysql

我有一张包含以下详细信息的表格

enter image description here

对于查看数据库详细信息,我尝试使用查询

SELECT * FROM itinv_log WHERE catname=:catname AND itemname=:itemname ORDER BY setdate DESC

按以下顺序显示结果:

02-02-2016 stock_in added 
03-02-2016 stock_in added
04-02-2016 stock_in added
25-01-2016 stock_in added
26-01-2016 stock_in added

我希望结果应按以下顺序排列:

04-02-2016 stock_in added
03-02-2016 stock_in added
02-02-2016 stock_in added
26-01-2016 stock_in added
25-01-2016 stock_in added

如果有人知道解决方案。请帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

使用STR_TO_DATE功能按实际日期值而不是数值进行排序。

SELECT * 
FROM itinv_log 
WHERE catname=:catname 
AND itemname=:itemname 
ORDER BY STR_TO_DATE(setdate , '%d/%m/%Y') DESC

答案 1 :(得分:0)

您可CAST将值date

SELECT * FROM itinv_log WHERE catname=:catname 
AND itemname=:itemname ORDER BY CAST(setdate AS DATE) DESC

答案 2 :(得分:0)

看起来您的setdate列是字符串类型。 更好的情况 - 将您的setdate转换为something more suitable for date,但如果您不能这样做,也许您可​​以使用以下字段:

SELECT *, STR_TO_DATE(setdate, '%m/%d/%Y') as formattedDate 
FROM itinv_log 
WHERE catname=:catname AND itemname=:itemname ORDER BY formattedDate DESC