Mysql 从上午10点到下午4点获取记录
表:教师可用时间Mysql 从上午10点到下午4点获取记录,mysql,time,Mysql,Time,表:教师可用时间 ID | TeacherID | Day | startTime | endTime 1 | 1 | Mon | 09:00:00 | 12:00:00 2 | 1 | Tue | 09:00:00 | 16:00:00 3 | 1 | Wed | 09:00:00 | 14:00:00 4 | 1 | Thu | 09:00:00 |
ID | TeacherID | Day | startTime | endTime
1 | 1 | Mon | 09:00:00 | 12:00:00
2 | 1 | Tue | 09:00:00 | 16:00:00
3 | 1 | Wed | 09:00:00 | 14:00:00
4 | 1 | Thu | 09:00:00 | 12:00:00
5 | 1 | Fri | 09:00:00 | 16:00:00
6 | 1 | Sat | 09:00:00 | 14:00:00
7 | 1 | Sun | 11:00:00 | 16:00:00
8 | 2 | Mon | 11:00:00 | 12:00:00
9 | 3 | Tue | 12:00:00 | 13:00:00
10 | 4 | Wed | 10:00:00 | 16:00:00
我有一张教师可用的时间表,我想让所有上午10点有空的教师参加Sat
我试过这个问题
SELECT * FROM working_times WHERE startTime >= '10:00:00' AND endTime <= '16:00:00'
但在类似于此查询的情况下,如果我添加startTime>='10:00:00'和day='Mon',它将无法正常工作,因为教师1在10:00:00可用,并且与endTime相同。你的结构不好
ID | TeacherID | Day | startTime | endTime
1 | 1 | Mon | 09:00:00 | 16:00:00
2 | 1 | Tue | 09:00:00 | 16:00:00
3 | 1 | Wed | 09:00:00 | 16:00:00
4 | 1 | Thu | 09:00:00 | 16:00:00
5 | 1 | Fri | 09:00:00 | 16:00:00
6 | 1 | Sat | 09:00:00 | 16:00:00
7 | 1 | Sun | 11:00:00 | 16:00:00
8 | 2 | Mon | 11:00:00 | 16:00:00
9 | 3 | Tue | 12:00:00 | 16:00:00
10 | 4 | Wed | 10:00:00 | 16:00:00
这是创建如下表的查询:
CREATE TABLE `working_times` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`teacherID` int(11) NOT NULL,
`day` varchar(5) DEFAULT NULL,
`startTime` time DEFAULT NULL,
`endTine` time DEFAULT NULL,
PRIMARY KEY (`ID`)
)
现在您可以使用这个查询了
SELECT * FROM working_times WHERE startTime >= '10:00:00' AND endTime <= '16:00:00'
完全重新设计数据库将是最好的解决方案。记住,SQL表不像一张纸上的图表,因为文本存储时间使查询更加困难。MySQL为此提供了内置函数。数据库表也不是此查询中的电子表格如果我添加startTime>='10:00:00'和day='Mon',则它无法正常工作b/c教师1在10:00:00@BCMSame问题上可用,endTime@BCM