【发布时间】:2011-02-12 20:57:06
【问题描述】:
在我的商店数据库中,我需要知道营业时间。你知道如何在我的分贝中实现这一点吗?
营业时间为周一至周日,每天可有2个开窗时间(例如09:00-12:00、16:00-19:00)
【问题讨论】:
在我的商店数据库中,我需要知道营业时间。你知道如何在我的分贝中实现这一点吗?
营业时间为周一至周日,每天可有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
这将使您有机会构建任何类型的时间表,其中包含任意数量的窗口,以及您需要的例外数量。它是通用的,仅限于它期望所有周都相同的事实。不考虑假期,也不考虑某人可能使用的奇数/偶数周时间表。
编辑:
对于 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
【讨论】:
您使用的是什么类型的数据库?如果是mysql,请输入“时间”类型的字段。然后你可以传递它的时间并对它们进行基本的 sql 时间操作。整篇文章都假设 mysql。
如果只有一家商店并且您知道它永远不会增长,只需制作一张名为 times 的表格,您可以在其中记录商店的营业时间。然后,如果您想查看商店是否营业,只需对照数据库中的某个范围检查当前时间即可。
如果有多个商店,则制作一个名为“times”的表和一个名为“stores”的表。在时间表中,列可以是“open”和“close”,id 称为“store_id”。商店表也需要一个 id。然后,你可以说:
"SELECT open, close FROM times WHERE store_id=x"
这将为您提供与特定商店相关的所有时间范围。
【讨论】: