【问题标题】:How to design table structure for Operating Hours如何设计营业时间的表格结构
【发布时间】:2015-12-22 12:44:18
【问题描述】:

问题 #1:

如何在 MySQL 中以高效的方式设计表

1) Store Opening Time, 
2) Break Time and 
3) Closing Time in a day

例如,周日:开放时间:上午 7:00,关闭时间:下午 5:00,休息时间开始:下午 1:00,休息时间结束:下午 2:30。

问题 #2:

如何定义查询以在该表中搜索在给定范围内打开/关闭的所有商店。 例如,如果用户尝试在上午 9:00 到 12:00 之间过滤商店的营业时间。由于休息时间或关闭时间可能在该时间范围内,我如何应用此过滤器的查询。

store_id    day open_time   break_start break_end   close_time
1           mon 7:00AM      1:00PM      2:30PM      5:00PM
1           tue 7:00AM      1:00PM      2:30PM      5:00PM
1           wed 7:00AM      1:00PM      2:30PM      5:00PM
1           thu 7:00AM      1:00PM      2:30PM      5:00PM
1           fri 7:00AM      1:00PM      2:30PM      5:00PM
1           sat Closed
1           sun Closed

类似的东西。如果用户使用标准: 开放时间:上午 8:00 至下午 2:00;要搜索商店,那么他必须能够查看在该时间段内打开的所有商店。此时间范围还必须包括商店 open_time。也就是说,根据提供的标准,商店的营业时间为上午 7:00、上午 8:00 和上午 9:00,直到下午 2:00。

【问题讨论】:

  • 到目前为止你得到了什么?
  • 它是每次商店打开/关闭时填充的实际打开和关闭的时间表或列表吗?无论如何,您的商店似乎有一个状态(opencloseclosed-for-a-break,如果您需要,可能是第三个状态),它随时间变化,所以它有开始和结束。
  • 它是实际开盘和关盘的列表,包括时间范围内的休息时间。
  • 请提供一些样本虚拟数据。

标签: mysql sql


【解决方案1】:

最好创建三个不同的列,因为您要在 开门时间、关门时间或休息时间

create table store_timing
(
store_id int, -- from store table
Opening_Time datetime,
break_time datetime,
closing_time datetime
)

查询:

select * 
from store_timing 
where Opening_Time<= 'Opening_Time' 
  and closing_time <= 'closing_time'

【讨论】:

  • 先生,我已就我的问题提供了更多详细信息。例如,如果用户尝试在上午 9:00 到 12:00 之间过滤商店的营业时间。我如何应用此过滤器的查询,因为休息时间或关闭时间可能在该时间范围内。
猜你喜欢
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多