Php Mysql查询逻辑(课程之前、之后和之间)
我的课程有很多专栏,但这个问题只需要三个专栏:Php Mysql查询逻辑(课程之前、之后和之间),php,mysql,sql,Php,Mysql,Sql,我的课程有很多专栏,但这个问题只需要三个专栏: ---------------------------------------- | start_date | start_time | end_time | ---------------------------------------- | 2018-09-12 | 09:30 | 11:30 | ---------------------------------------- 我需要一个包含符合以下条件的课程的查询:
----------------------------------------
| start_date | start_time | end_time |
----------------------------------------
| 2018-09-12 | 09:30 | 11:30 |
----------------------------------------
我需要一个包含符合以下条件的课程的查询:
- 30分钟前开始或将在未来30分钟开始的课程
- 课程在30分钟内结束或在接下来的30分钟内结束
- 目前正在进行的课程
选择*
从球场
其中开始日期=今天和
((开始时间>=now-30min,开始时间=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() )
)
选择c*
来自课程c
其中start_date=curdate()和
(curtime()-间隔30分钟和curtime()-间隔30分钟之间的开始时间或
curtime()-间隔30分钟和curtime()之间的结束时间-间隔30分钟或
(开始时间curtime())
)
最后一个条件是课程在过去开始,将来结束。难道不能简化为只测试开始时间在现在之前,结束时间在现在之后吗?@Sloan Thrasher:不。谢谢,这似乎是正确的方式!在罗马尼亚编程太晚了:)将日期和时间存储为单个实体
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() )
)