I'l*_*ack 5 php mysql database
在数据库中存储商店开放和关闭时间的最佳方法是什么,以及如何计算PHP中的时间?
我想出了这个表设计:
+----+---------+----------+-----------+------------+
| id | shop_id | week_day | open_hour | close_hour |
+----+---------+----------+-----------+------------+
| 1 | 3 | 1 | 15:00:00 | 23:00:00 |
| 2 | 3 | 2 | 15:00:00 | 23:00:00 |
| 3 | 3 | 3 | 18:00:00 | 02:00:00 |
| 4 | 3 | 4 | 18:00:00 | 02:00:00 |
| 5 | 3 | 5 | 18:00:00 | 03:00:00 |
+----+---------+----------+-----------+------------+
+------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| shop_id | int(11) | NO | | NULL | |
| week_day | int(11) | NO | | NULL | |
| open_hour | time | NO | | NULL | |
| close_hour | time | NO | | NULL | |
+------------+---------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
例如,星期二(week_day = 2)它在下午3点开放,在晚上11点(星期二)关闭.
星期三("week_day = 2"),它在下午6点开放,在午夜凌晨2点结束,即周四.午夜(00:00:00或之后)关闭时间应该如何存储在数据库中?
假设客户希望shop_id = 3在星期二晚上10点下订单(),他们应该能够根据数据库数据这样做.但是,如果客户希望在星期四凌晨1点下订单,但数据库显示week_day = 3它已关闭02:00:00
如果商店开放,如何用PHP编写工作?看起来很复杂!
我是否需要更改表格设计,以便用PHP编写更容易?
可以考虑让表信息真正正确
+----+---------+----------+-----------+------------+
| id | shop_id | week_day | open_hour | close_hour |
+----+---------+----------+-----------+------------+
| 1 | 3 | 1 | 15:00:00 | 23:00:00 |
| 2 | 3 | 2 | 15:00:00 | 23:00:00 |
| 3 | 3 | 3 | 18:00:00 | 23:59:59 |
| 4 | 3 | 4 | 00:00:00 | 02:00:00 |
| 5 | 3 | 4 | 18:00:00 | 23:59:59 |
| 6 | 3 | 5 | 00:00:00 | 02:00:00 |
| 7 | 3 | 5 | 18:00:00 | 23:59:59 |
| 8 | 3 | 6 | 00:00:00 | 03:00:00 |
+----+---------+----------+-----------+------------+
Run Code Online (Sandbox Code Playgroud)
然后使用以下类型(正如您提到的,此查询适用于星期二晚上 10:00):
SELECT count(*) FROM `shop`
WHERE week_day=3
and open_hour<='22:00:00'
and close_hour>='22:00:00'
Run Code Online (Sandbox Code Playgroud)