在我的商店数据库中,我需要有营业时间。你知道我如何在我的 dB 中实现它吗?
开放时间为周一至周日,每天可有2个开放窗口(ex 09:00-12:00, 16:00-19:00)
最佳答案
再建一张表,命名为schedules
,在shops
表主键中添加一个外键,一个Day of week
字段,time_open
, time_closed
。
数据应如下所示:
shop_id day_of_week time_open time_closed
1 1 09:00 12:00
1 1 16:00 19:00
1 2 09:00 12:00
1 2 16:00 19:00
1 3 09:00 12:00
1 3 16:00 19:00
1 6 10:00 14:00
2 1 09:00 12:00
2 1 13:00 18:00
这将使您有机会构建任何类型的时间表,窗口数量随心所欲,异常(exception)情况数量随心所欲。它是通用的,仅限于它期望所有星期都相同的事实。没有考虑假期,也没有考虑某人可能使用的奇数/偶数周时间表。
编辑:
关于 Julien 的问题,关于夜间营业的工作时间,我注意到以前的解决方案并不是最好的。您不能让柱线在 20:00 开盘,在 06:00 收盘,然后比较当前时间 (02:45) 是否在此间隔内,因为它不会。这就是为什么最方便的不是登记下类时间,而是登记总工作时间,以方便的计量单位(例如分钟)。
shop_id day_of_week time_open working_time
1 1 09:00 180
1 1 16:00 180
1 2 09:00 180
1 2 16:00 180
1 3 09:00 180
1 3 16:00 180
1 6 10:00 240
2 1 09:00 180
2 1 13:00 300
关于营业时间 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2721533/