MySql字符串使用LIKE搜索为Date



我正在管理一个10年前为预订课程而设计的系统。

数据结构将startTime保存为格式为YYYYmmDDHHMM且格式与课程endTime相同的字符串。

我如何运行一个查询,该查询可以让我在未来仅在HHMM(0930或1630(预订所有课程?

这节课可能有一个小时长,从09:0010:00都有预订,所以如果我把搜索时间设置为09:30,这节课也应该返回。

谢谢

您可以使用STR_TO_DATERIGHT:的组合

SELECT ...
WHERE STR_TO_DATE(startTime, '%Y%m%d%H%i') > CURDATE() AND 
(RIGHT(startTime, 4) = '0930' OR RIGHT(startTime, 4) = '1630')

更新

寻找可能与所需时间重叠的课程(例如,从上午9点到上午10点的课程(有点复杂。基本上,我们还需要获得值的time部分,并在9:30或16:30左右检查它,例如

SELECT ...
WHERE STR_TO_DATE(startTime, '%Y%m%d%H%i') > CURDATE() AND 
('09:30' BETWEEN TIME(STR_TO_DATE(startTime, '%Y%m%d%H%i')) AND TIME(STR_TO_DATE(endTime, '%Y%m%d%H%i')) OR
'16:30' BETWEEN TIME(STR_TO_DATE(startTime, '%Y%m%d%H%i')) AND TIME(STR_TO_DATE(endTime, '%Y%m%d%H%i')))

最新更新