在我的商店数据库中,我需要营业时间。你有一个想法,我可以在我的dB中实现这个吗?SQL用于营业时间
的开放时间为周一至周日,每天可以有2个开放的窗口(前09:00-12:00,16:00-19:00)
在我的商店数据库中,我需要营业时间。你有一个想法,我可以在我的dB中实现这个吗?SQL用于营业时间
的开放时间为周一至周日,每天可以有2个开放的窗口(前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
这将使你建立任何形式安排的机会,尽可能多的窗口,只要你想,你需要多少个例外。这是普遍的,仅限于它期望所有星期都相同的事实。没有考虑假期,也不是某人可能使用的奇怪/偶数周的时间表。
编辑:
随着朱利安的问题,有关工作一晚上生意的时间,它已经到了我的注意,以前的解决方案是不远处的最佳蒲式耳。您不能在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
你正在使用什么类型的数据库?如果是mysql,请输入“time”类型的字段。然后你可以传递它的时间,并对它们进行基本的SQL时间操作。这整个文章假定mysql。
如果只有一家店,而且您知道这家店永远不会增长,那么只需制作一张名为“时间”的表格,您可以保持店铺的开放时间。然后,如果您想查看商店是否处于开放状态,只需根据数据库中的某个范围检查当前时间。
如果有多个商店,请创建一个名为“times”的表格和一个名为“stores”的表格。在时间表中,列可以使用名为“store_id”的ID“打开”和“关闭”。商店表也需要一个id。然后,你可以说:
"SELECT open, close FROM times WHERE store_id=x"
这会给你所有与特定商店相关的时间范围。
这将允许您为特定日期添加第三个时间表,如果这违反了您的规则,则需要严格控制添加新时间表以检查该时间表,或者您可以添加“ sched_num“列的检查约束条件是它是0或1,以及day_of_week和sched_num上的唯一约束。 – 2010-04-27 19:07:29
这是处理晚上营业时间的更好方法,就像酒吧一样,营业时间从晚上10点到上午04点。添加两个条目(day1:22:00-> 23:59和day2:00:00-> 04:00)?或一个条目(第1天:22:00-> 04:00)? – Julien 2012-02-27 00:18:36
有趣的问题。在这种情况下,重新做出这种情况是最合理的。查看编辑的回复。 – AlexanderMP 2012-03-02 02:46:12