【问题标题】:MySql query between range values(single record) [duplicate]范围值之间的MySql查询(单条记录)[重复]
【发布时间】:2023-04-06 01:56:01
【问题描述】:

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

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

请帮助我以最佳方式找出解决方案。你的帮助对我很有帮助。提前致谢。

【问题讨论】:

  • 哪个数据类型是列time_slots ?????
  • 目前,time_slots 将是逗号分隔的字符串。
  • 您应该按照以下答案中的建议更改结构

标签: mysql node.js database


【解决方案1】:

我认为你可以优化你的表结构,否则当表中的记录数很大时,获取数据会花费很多时间。

尝试实现以下结构会很容易。

时间表

id       time      
1        time1    
2        time2     
3        time3     
4        time4     
5        time5

Time_slot_table

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

【讨论】:

  • @KushalNanavati 我尚未验证查询,如果您在查询中遇到任何问题,请告诉我
  • 是的,我已经验证并且它正在工作。但是我正在研究我在问题中给出的情况(具有多个范围值的单个表)。如果您找到解决方案,我们将不胜感激。
猜你喜欢
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-26
  • 2014-03-02
  • 2023-03-26
相关资源
最近更新 更多