我有一个MySQL列设置以下MySQL的SELECT查询字符串分割搜索值
日期范围= 2017年2月27日 - 2017年2月29日
现在我想
SELECT * FROM leaves WHERE daterange (>= firstvalue && <= secondvalue)
这可能吗?将每个值分开,因为它们被保存为一个字符串?否则,我想我必须在插入表之前拆分日期范围。
我有一个MySQL列设置以下MySQL的SELECT查询字符串分割搜索值
日期范围= 2017年2月27日 - 2017年2月29日
现在我想
SELECT * FROM leaves WHERE daterange (>= firstvalue && <= secondvalue)
这可能吗?将每个值分开,因为它们被保存为一个字符串?否则,我想我必须在插入表之前拆分日期范围。
假设日期范围,firstvalue和secondvalue是合适的日期(日期时间)数据类型可以使用
之间SELECT *
FROM leaves
WHERE daterange BETWEEN firstvalue AND secondvalue
如果一些值involed不是最新的数据类型,但VARCHAR你应该使用STR_TO_DATE适当的转换或
首先,修复你的数据结构。这里有事情是错误的保存像是范围:
date
或datetime
),而不是字符串。也就是说,有时候你会被其他人的设计决定困住。所以,如果你完全无法修复数据结构,那么有一个解决方法。您可以将范围转换为您需要的值:
where $date >= str_to_date(left(daterange, 10), '%m-%d-%Y') and
$date <= str_to_date(right(daterange, 10), '%m-%d-%Y')
谢谢!我同意,数据结构是完全混乱的,我试图修改别人的项目。我会放弃这一点。 – Robert
哪些数据类型是daterange,firstvalue和secondvalue? – scaisEdge
@Chad。 。 。在将日期范围插入表格之前拆分日期范围。不要制造混乱。 –