2012-03-02 23 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;