admin

营业时间的SQL

sql

在我的商店数据库中,我需要有营业时间。您是否知道如何在dB中实现这一点?

营业时间为周一至周日,每天可以有2个开放窗口(例如09:00-12:00、16:00-19:00)


阅读 172

收藏
2021-05-10

共1个答案

admin

建一个表,把它schedules添加一个外键shops表的主键,一个Day of weektime_opentime_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

这将使您有机会构建任何类型的日程表,并根据需要设置任意数量的窗口以及所需的异常数量。它是通用的,仅限于期望所有星期都相同的事实。没有考虑假期,也没有人可能会使用的奇数/偶数周时间表。

编辑:
关于朱利安(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
2021-05-10