table:booked_timings
id | from date | todate | vehicle id
------------------------------------------------------------------
1 2017-05-04 06:00:00 2017-05-04 08:00:00 98
2 2017-05-04 10:00:00 2017-05-04 12:00:00 98
3 2017-05-04 15:00:00 2017-05-04 18:30:00 98
上表包含ID为98的车辆的预定时间。当用户尝试按照以下时间预订时,我需要一个MySQL查询列出所有预订的车辆时间为98的
(i)08:00:00至12:00:00 (ii)05:00:00至23:00:00
答案 0 :(得分:0)
SELECT * FROM TABLE WHERE 1=1 AND
(
(
STR_TO_DATE(DATE_FORMAT(FROMDATE,'%H:%i:%s'),'%H:%i:%s') > STR_TO_DATE(08:00:00,'%H:%i:%s') AND STR_TO_DATE(DATE_FORMAT(FROMDATE,'%H:%i:%s'),'%H:%i:%s') < STR_TO_DATE(12:00:00,'%H:%i:%s')
)
OR
(
STR_TO_DATE(DATE_FORMAT(FROMDATE,'%H:%i:%s'),'%H:%i:%s') > STR_TO_DATE(05:00:00,'%H:%i:%s') AND STR_TO_DATE(DATE_FORMAT(FROMDATE,'%H:%i:%s'),'%H:%i:%s') < STR_TO_DATE(23:00:00,'%H:%i:%s')
)
)
如上面的代码所示,假设fromdate
和todate
是具有DATE
数据类型的COLUMN。并且仅将该列的时间分数与您指定的持续时间进行比较。在此处我们提供字符串,因此我们需要使用
STR_TO_DATE()
功能。
尝试上面的代码,希望这会有所帮助。