我目前正在創建一個網站,我可以添加視頻。當我添加視頻時,我需要提供發佈日期,格式如下:「21-09-2012」。MYSQL查詢:ORDER BY特定日期
現在,當我使用簡單的ORDER BY命令時,它只對前兩位數字進行排序。
有誰知道我該如何解決這個問題?
我目前正在創建一個網站,我可以添加視頻。當我添加視頻時,我需要提供發佈日期,格式如下:「21-09-2012」。MYSQL查詢:ORDER BY特定日期
現在,當我使用簡單的ORDER BY命令時,它只對前兩位數字進行排序。
有誰知道我該如何解決這個問題?
這聽起來像是你將日期字段存儲爲字符串。如果是的話,那麼你就需要嘗試在訂購前先將該值轉換爲一個日期:
SELECT STR_TO_DATE(yourdate, '%d-%m-%Y')
FROM yourtable
MySQL文檔STR_TO_DATE
但是,你應該保存你的日期中的日期數據類型和而不是字符串值。那麼你將不必執行這些類型的轉換。
您還可以在ORDER轉換BY語句本身:
order by STR_TO_DATE(yourdate, '%d-%m-%Y')
很無聊的研究之後,我有一個絕妙的主意:
格式:18/11/2014
select id,
date_string,
substr(date_string, 1, 2) as day,
substr(date_string, 4, 2) as month,
substr(date_string, 7, 4) as year
from myTable
order by year, month, day
可選你可以做同樣的邏輯來增加小時,分鐘,秒...
什麼是t他的發佈日期字段的數據類型? – Taryn 2012-08-13 14:20:44
發佈日期字段的列是日期數據類型還是其他內容如varchar? – newfurniturey 2012-08-13 14:21:28
不要使用字符串格式來存儲日期。使用[日期](http://dev.mysql.com/doc/refman/5.0/en/datetime.html?ff=nopfpls) – 2012-08-13 14:21:31