【发布时间】:2016-11-25 00:33:50
【问题描述】:
我需要一些帮助来查询我的日历/日期表
场景:我有一个包含日期和时间的“日历”表(见下文),用户将设置他们的可用日期,通常是每天都有可用的时间段。所以我的表是这样的:
+------+------------+---------------------+---------------------+
| ID | user_id | start_date | end_date |
+------+------------+---------------------+---------------------+
| 1 | 1 | 2016-09-01 08:00:00 | 2016-09-01 16:00:00 |
| 2 | 1 | 2016-09-03 00:00:00 | 2016-09-03 23:59:59 |
| 3 | 1 | 2016-09-04 00:00:00 | 2016-09-04 16:00:00 |
| 4 | 1 | 2016-09-05 08:00:00 | 2016-09-05 16:00:00 |
| 5 | 2 | 2016-09-05 08:00:00 | 2016-09-05 16:00:00 |
| 6 | 2 | 2016-09-07 08:00:00 | 2016-09-07 16:00:00 |
| 7 | 2 | 2016-09-08 08:00:00 | 2016-09-08 16:00:00 |
| 8 | 2 | 2016-09-08 18:00:00 | 2016-09-08 22:00:00 |
+------+------------+---------------------+---------------------+
我们这里有 2 个用户,所以我想要以下内容:
如果我搜索 start_date = 2016-09-05 08:00:00 和 end_date = 2016-09-05 16:00:00 它应该返回用户 1 和 2。因为他们都有一个条目这些日期。如果 start_date = 2016-09-05 09:00:00 和 end_date = 2016-09-05 15:00:00 也是如此,这也应该返回两个用户,因为我搜索的时间在时隙之间如示例所示。
-
第二种情况有点棘手,如果用户搜索 start_date = 2016-09-03 08:00:00 和 end_date = 2016-09-04 16:00:00 我希望查询检查以下内容:
- 查看用户是否每天在这些时间有空。
- 所以在这种情况下,用户是否在 2016 年 9 月 3 日的 08:00:00 和 16:00:00 之间以及 2016 年 9 月 4 日的 08:00:00 和 16:00 之间可用: 00.
- 在上面的示例中应该返回用户 1。
如果需要,我愿意就重新设计我的架构提出建议。
希望有人能帮我解决这个问题。
【问题讨论】:
标签: mysql sql date laravel-5 calendar