我有一个包含许多专栏的课程,但这个问题只需要其中三个:
----------------------------------------
| start_date | start_time | end_time |
----------------------------------------
| 2018-09-12 | 09:30 | 11:30 |
----------------------------------------
我需要一个包含以下标准的课程的查询:
前两个我设法编写查询,但现在请求第三个标准。到目前为止我有这个查询(伪mysql查询)
SELECT *
FROM courses
WHERE start_date = today AND
((start_time >= now-30min AND start_time <= now+30min) OR
(end_time >= now-30min AND end_time <= now+30min))
问题是,如何编写一个查询来满足所有这三个要求...我正在大脑一小时但我无法使它工作,有些东西在我脑海里不起作用。
谢谢。
假设课程没有超过午夜边界:
select c.*
from courses c
where start_date = curdate() and
(start_time between curtime() - interval 30 minute and curtime() - interval 30 minute or
end_time between curtime() - interval 30 minute and curtime() - interval 30 minute or
( start_time < curtime() and end_time > curtime() )
)
最后一个条件就是课程从过去开始,将在未来结束。