我有一个课程预订日历,我正在尝试检查讲师是否在给定的时间预订或有空。
我有下面的表格来保存lesson_registrations
| id | InstructorId | startTime | endTime |
| 1 | 2 | 201806271100 | 201806271200 |
| 2 | 2 | 201806271400 | 201806271500 |
因此,根据此表,讲师可用于从201806271200
到201806271400
的课程,但当我运行以下查询时,它会将讲师标记为已预订。
SELECT * FROM lesson_registrations
WHERE
((startTime BETWEEN '201806271200' AND '201806271400' )
OR (endTime BETWEEN '201806271200' AND '201806271400')
OR ('201806271200' BETWEEN startTime AND endTime)
OR ('201806271400' BETWEEN startTime AND endTime) )
我在这里做错了什么?
谢谢
发布于 2018-06-29 09:23:32
我认为,因为between是包含的,所以语句捕获了201806271200作为endtime的记录。如果您运行以下命令,则不会得到显示有可用的课程的结果。
SELECT * FROM lesson_registrations
WHERE
(startTime BETWEEN '201806271159' AND '201806271359' )
是的,1200作为结束时间,因此下一个的开始时间需要在1201内,或者结束时间需要在1159内,并且开始时间可以是1200
https://stackoverflow.com/questions/51092971
复制相似问题