我的数据库表中有以下数据
id time time_slots
1 time1 09:00-10:30,12:15-14:00,16:30-19:30
2 time2 14:00-15:15,18:30-19:30
3 time3 08:30-10:00,13:00-15:00,15:30-18:00
4 time4 13:00-15:00
5 time5 15:00-16:00,17:30-18:30
现在,如果当前时间是13:30,那么我想要上表中的3条记录(id 1,3,4)。最终结果将是:
id
1
3
4
请帮助我以最佳方式找出解决方案。您的帮助将对我非常有帮助。预先感谢。
答案 0 :(得分:6)
我认为您可以优化表结构,否则当表中的记录数很大时,将需要大量时间来获取数据。
尝试实现以下结构将很容易。
时间表
id time
1 time1
2 time2
3 time3
4 time4
5 time5
时间槽表
id time_table_id(fk) start_time end_time
1 1 09::00 10:30
2 1 12:15 14:00
3 1 16:30 19:30
4 2 14:15 15:15
5 2 18:30 19:30
现在在查询下面运行以获取范围内的数据
SELECT time
FROM Time_table
JOIN Time_slot_table ON Time_slot_table.time_table_id = Time_table.id
WHERE current_time BETWEEN Time_slot_table.start_time AND Time_slot_table.end_time