2012-03-02 57 views
1

我有一個包含組合日期的字段,行2012-02-03 - 2012-02-05其中第一個日期是「from」日期,第二個是「至今。在sql查詢中拆分字段並按它們排序

有沒有一種方法可以將這兩個日期分開,然後按「從」日期排序?

我知道最好的辦法是在這兩個日期有兩個不同的字段,但是因爲我開始這樣做,所以有很多重新編碼來分離它們。

+0

哪個'datetype'您用於該列? – 2012-03-02 06:52:42

回答

2

您可以使用SUBSTRING_INDEX

假設你的日期有「 - 」他們(即空間,連字符,空間)之間,你可以這樣做:

SELECT SUBSTRING_INDEX(datefield,' - ',1) as fromDate, 
     SUBSTRING_INDEX(datefield,' - ',-1) as toDate, 
FROM .. 
ORDER BY DATE(fromDate) 

SUBSTRING_INDEX(string,delimiter,count)返回所有的string達(不包括)count個occurence delimiter。如果delimiter爲負數,則它從右數起,並返回字符串末尾的子串。

我用DATE(fromDate)fromDate從一個字符串轉換爲一個MySQL日期,所以它以類似日期的方式排序。

1

您可以將leftright函數從右欄中得到該列留下的10位和10位,使用from_date和to_date的別名,然後按順序排列。

2012-02-03 - 2012-02-05 
__________ __________ 
Left 10  Right 10 
Digits  Digits 


SELECT LEFT(mydate,10) AS from_date, 
     RIGHT(mydate,10) AS to_date 
     FROM mytable 
     ORDER BY from_date,to_date;