2013-12-12 34 views
1

我該如何訂購(在列日期) - 不是很好的日期格式。ORDER BY壞格式日期列

7 Dec 2013 - 5 Feb 2014 
31 Oct 2013 - 29 Dec 2013 
3 Dec 2013 - 31 Jan 2014 
3 Dec 2013 - 31 Jan 2014 

我只需要通過第一日期排序,這將是

7 Dec 2013 
31 Oct 2013 
3 Dec 2013 
3 Dec 2013 

我已經檢查STR_TO_DATE,但如果我不是錯了,我需要有一個字符串投入到這一點,這我沒有。每個日期都在數據庫列日期

+0

您的查詢是什麼? – veelen

+0

Filipe Silva它是一個字符串(varchar)。 Veelen我現在不知道如何解決這個問題,所以我還沒有開始,這就是爲什麼我在這裏問。 – JohnSmith

+1

保留日期作爲字符串是非常糟糕的,你應該返工並放置兩個日期列,這將是更高效和方便的未來。 –

回答

0

試試這個:

SELECT * FROM tab1 
ORDER BY str_to_date(left(col1,INSTR(col1,' -')), '%d %M %Y') 

這得到的字符串的' -'左側,然後將其轉換爲年月日的日期格式,並將其作爲排序的日期。

sqlfiddle demo

附:我同意以前的評論,如果您對每個時期的start_date和end_date使用了兩列,這很容易避免。而且速度也會更快。