使用like作为日期搜索mysql字符串

g6ll5ycj  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(322)

我正在管理一个10年前为预订课程而设计的系统。
数据结构保存 startTime 格式为字符串 YYYYmmDDHHMM 和课的格式一样 endTime .
我如何运行一个查询,可以让我在所有的课程预订 HHMM (0930或1630)仅限将来?
课程可能有一小时,从 09:0010:00 ,所以如果我把搜索时间 09:30 这一课也应该得到回报。
谢谢您

hfsqlsce

hfsqlsce1#

你可以用 STR_TO_DATE 以及 RIGHT :

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')))

相关问题