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_hour和close_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开放'
过去,我通过使用不带日期的时间戳(自午夜以来的秒数)来处理此问题。因此,周六的开盘价为62100,收盘价为91800。
我的想法是,这消除了收盘价跨越午夜时所需的一些逻辑,因为您只需要比较自日期开始以来的秒数与时间范围。
检查从“昨天”开始是否仍然开放非常容易 - 只需添加86400当前“时间”(自当天开始以来的秒数)并对照前一天进行检查即可。
可能都是一条 SQL 语句。
| 归档时间: |
|
| 查看次数: |
479 次 |
| 最近记录: |