降序

2016-02-16 30 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 –