降序

2016-02-16 27 views
2

选择日期我有以下细节降序

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 

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

+0

MySQL的日期格式是'YYYY-MM-dd'这样的顺序将在这种格式。如果你需要另一种订单,你需要通过php来制作 –

+0

'setdate'的数据类型是一个字符串类型,所以你会得到一个字母顺序。你不应该把日期存储在字符串中。将列数据类型更改为DATE,即可完成。 –

+0

它只有DATE格式。 –

回答

0

使用STR_TO_DATE函数按实际日期值而不是数值对其排序。

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

如果我尝试这样做意味着它显示错误意外% –

+0

@KavyaShree完整错误请 – Matt

+0

语法错误,/ home/sunmace/public_html中的意外'%'/ 57行测试/ item_inv/item_inv.php ..这是我尝试使用这种语法时得到的结果 –

0

您可以将价值CASTdate

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

它显示的结果像是01-02-2016 02-02-2016 .. –

0

看起来你setdate列是字符串类型。 更好的情况下 - 将您setdatesomething 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 
+0

..我试过这@alexey即时获取意外%错误。 –

+0

我为setdate定义的数据类型是日期格式 –

+0

DATE_FORMAT('setdate','%Y%M%d')AS formattedDate –