【发布时间】:2019-12-12 16:59:33
【问题描述】:
表:TeachersAvailableTime
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 点有空的教师。
我试过这个查询
SELECT * FROM working_times WHERE startTime >= '10:00:00' AND endTime <= '16:00:00'
但在这种情况下,如果我添加 startTime >= '10:00:00' AND day='Mon',它会失败,因为教师 1 在 10:00:00 可用,并且与 endTime 有同样的问题
【问题讨论】:
-
彻底重新设计您的数据库将是最好的解决方案。请记住,SQL 表不像纸上的图表
-
将时间存储为文本会使查询变得更加困难。 MySQL为此提供了内置函数。 dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
-
数据库表也不是电子表格