【发布时间】:2021-11-02 08:36:30
【问题描述】:
我有一个包含两个日期字段的表格:
- reservation_begin
- booking_end
我想知道从 8 月 25 日到 8 月 31 日占用我的预订。
在我的选择查询中:
Booking::select ('id', ''name', reservation_begin', 'reservation_end')
->whereDate('reservation_begin', '>=', $startDate)
->whereDate('reservation_end', '<=', $endDate)
->get();
如果出现以下情况,我将无法在数据库中找到该记录: $startDate = '2021-08-25'; $endDate = '2021-09-01' (从 8 月 25 日到 9 月 1 日)。
我想要包含 8 月 25 日至 8 月 31 日期间的预订,而 8 月 25 日至 9 月 1 日期间的预订仍包括该期间,我该如何取出?
感谢您的帮助
【问题讨论】:
-
我不知道这是否是一个错误,但在第一个 whereDate 中
> =之间有一个空格。尝试删除它并尝试 -
您还想要任何重叠预订吗?这些将
occupy任何一天,而不是全部。如果是这样,请尝试:->whereDate('reservation_begin', '<=', $endDate)->whereDate('reservation_end', '>=', $startDate) -
@MarvinCollins 打错了,原代码没有空格
-
@JonArmstrong :该解决方案无法正常工作。我想选择时间段,例如:8 月 25 日到 8 月 31 日,我想要包含这些日期的所有记录,例如:从 25 到 31 到 23 到 31 到 1 月 23 日到 9 月 30 日 从 8 月 31 日到 2 日9 月等所有从 8 月 25 日到 31 日“穿越”的人
-
请检查我的 SQL 示例(在答案中)。我展示了您的逻辑(第一个),然后展示了几个解决方案(第二个和第三个)。这些确实提供了重叠案例,这是我认为您所要求的。