范围值之间的MySQL查询(单条记录)

时间:2019-06-11 05:24:21

标签: mysql node.js database

我的数据库表中有以下数据

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

请帮助我以最佳方式找出解决方案。您的帮助将对我非常有帮助。预先感谢。

1 个答案:

答案 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