【发布时间】:2012-03-02 06:47:59
【问题描述】:
我有一个包含组合日期的字段,即 2012-02-03 - 2012-02-05 行,其中第一个日期是“开始”日期,第二个是“结束”日期。
有没有办法可以拆分这两个日期,然后按“开始”日期排序?
我知道最好的办法是为这两个日期设置两个不同的字段,但是自从我开始这样做以来,需要进行大量重新编码以将它们分开。
【问题讨论】:
-
哪个
datetype用于该列?
我有一个包含组合日期的字段,即 2012-02-03 - 2012-02-05 行,其中第一个日期是“开始”日期,第二个是“结束”日期。
有没有办法可以拆分这两个日期,然后按“开始”日期排序?
我知道最好的办法是为这两个日期设置两个不同的字段,但是自从我开始这样做以来,需要进行大量重新编码以将它们分开。
【问题讨论】:
datetype 用于该列?
您可以为此使用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 直到(不包括)countth 出现delimiter。如果delimiter 为负数,则从右开始计数,并返回字符串末尾的子字符串。
我使用 DATE(fromDate) 将 fromDate 从字符串转换为 MySQL 日期,因此它以类似日期的方式排序。
【讨论】:
或者,如果您的日期正好有 10 个字符长度,您可以使用 SUBSTRING 如下http://sqlfiddle.com/#!2/53006/4
【讨论】: