2012-08-13 55 views
0

我目前正在創建一個網站,我可以添加視頻。當我添加視頻時,我需要提供發佈日期,格式如下:「21-09-2012」。MYSQL查詢:ORDER BY特定日期

現在,當我使用簡單的ORDER BY命令時,它只對前兩位數字進行排序。

有誰知道我該如何解決這個問題?

+1

什麼是t他的發佈日期字段的數據類型? – Taryn 2012-08-13 14:20:44

+0

發佈日期字段的列是日期數據類型還是其他內容如varchar? – newfurniturey 2012-08-13 14:21:28

+0

不要使用字符串格式來存儲日期。使用[日期](http://dev.mysql.com/doc/refman/5.0/en/datetime.html?ff=nopfpls) – 2012-08-13 14:21:31

回答

4

這聽起來像是你將日期字段存儲爲字符串。如果是的話,那麼你就需要嘗試在訂購前先將該值轉換爲一個日期:

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') 
+0

如果表格很大,那麼性能會很高 – 2012-08-13 14:28:47

+0

@ClintonWard true,它們應該將日期存儲在日期數據類型中,但如果他們想要將其轉換則是如何轉換它。 – Taryn 2012-08-13 14:29:44

+0

@gordon感謝您的編輯。 :) – Taryn 2012-08-13 14:34:20

1

很無聊的研究之後,我有一個絕妙的主意:

格式: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 

可選你可以做同樣的邏輯來增加小時,分鐘,秒...