拆分sql查询中的字段并按字段排序

Aun*_*une 3 mysql split field

我有一个包含组合日期的字段,第 2012-02-03 - 2012-02-05 行,其中第一个日期是“开始”日期,第二个日期是“结束”日期。

有没有办法可以分割这两个日期,然后按“起始”日期排序?

我知道最好的事情是为这两个日期设置两个不同的字段,但是自从我开始这样做以来,需要进行大量的重新编码来分隔它们。

mat*_*fee 6

您可以用于SUBSTRING_INDEX此用途。

假设您的日期之间有“-”(即空格、连字符、空格),您可以执行以下操作:

SELECT SUBSTRING_INDEX(datefield,' - ',1) as fromDate,
       SUBSTRING_INDEX(datefield,' - ',-1) as toDate,
FROM ..
ORDER BY DATE(fromDate)
Run Code Online (Sandbox Code Playgroud)

SUBSTRING_INDEX(string,delimiter,count)返回所有string直到(不包括)第count次出现的delimiter。如果delimiter为负数,则从右侧开始计数,并返回字符串末尾的子字符串。

我曾经DATE(fromDate)fromDate字符串转换为 MySQL 日期,因此它以类似日期的方式排序。