确定商店是否开放?

use*_*800 7 php mysql database-design strtotime

在PHP和MySQL中 - 如何确定Store是打开还是关闭(返回true或false)?

如果商店关闭,如何获得下一个营业时间?

Opening_Hours表格示例:

+----+---------+----------+-----------+------------+---------+
| id | shop_id | week_day | open_hour | close_hour | enabled |
+----+---------+----------+-----------+------------+---------+
|  1 |       1 |        1 | 16:30:00  | 23:30:00   |       1 |
|  2 |       1 |        2 | 16:30:00  | 23:30:00   |       1 |
|  3 |       1 |        3 | 16:30:00  | 23:30:00   |       0 |
|  4 |       1 |        4 | 16:30:00  | 23:30:00   |       1 |
|  5 |       1 |        5 | 10:00:00  | 13:00:00   |       1 |
|  6 |       1 |        5 | 17:15:00  | 00:30:00   |       1 |
|  7 |       1 |        6 | 17:15:00  | 01:30:00   |       1 |
|  8 |       1 |        7 | 16:30:00  | 23:30:00   |       0 |
+----+---------+----------+-----------+------------+---------+
Run Code Online (Sandbox Code Playgroud)

open_hourclose_hour是TIME类型的字段.表设计好吗?

当前时间示例:

  • 当前时间:星期二23:00, - 输出:打开,'星期二下午16:30 - 23:30开放'

  • 当前时间:星期二23:40, - 输出:关闭,' 星期六16:30 - 23:30开放'

星期四开放因为Opening_Hours.week_day = 3被禁用


现在如何处理午夜时间?这变得更复杂.

如您所见,周六(Opening_Hours.week_day = 5),开放时间为下午17:15至01:30(第二天周日休息)

如果当前时间是周日凌晨01:15,那么商店仍然会打开Opening_Hours.week_day = 5.

输出:打开,'周六17:15 - 01:30开放'

Tim*_*tle 3

过去,我通过使用不带日期的时间戳(自午夜以来的秒数)来处理此问题。因此,周六的开盘价为62100,收盘价为91800

我的想法是,这消除了收盘价跨越午夜时所需的一些逻辑,因为您只需要比较自日期开始以来的秒数与时间范围。

检查从“昨天”开始是否仍然开放非常容易 - 只需添加86400当前“时间”(自当天开始以来的秒数)并对照前一天进行检查即可。

可能都是一条 SQL 语句。