Php 仅当日期范围不在日期范围内时,Laravel 7 DB查询

Php 仅当日期范围不在日期范围内时,Laravel 7 DB查询,php,sql,Php,Sql,我有这样的想法: $from = min($start_date, $end_date); $till = max($start_date, $end_date); DB::table('booked') ->where('start', '<=', $from) ->where('end', '>=', $till) ->get(); $from=min($start\u date,$end\u date); $till=max(

我有这样的想法:

$from = min($start_date, $end_date);
$till = max($start_date, $end_date);

DB::table('booked')
     ->where('start', '<=', $from)
     ->where('end', '>=', $till)
     ->get();
$from=min($start\u date,$end\u date);
$till=max($start\u date,$end\u date);
DB::表('booked')
->其中('start','=',$till)
->get();
这是stackoverflow的一个很好的解决方案

这似乎有效,但我需要相反的结果

在我的数据库中,我有以下数据:开始:2020-09-27 10:00:00结束:2020-09-27 12:00:00 我必须查询其中的行,例如:


$start_date(2020-09-27 9:00:00)和$end_date(2020-09-27 11:00:00)两者都不在start:和end:希望我的问题足够清楚。

如果我没弄错,这就是你需要的

$from = min($start_date, $end_date);
$till = max($start_date, $end_date);

DB::table('booked')
     ->where('start', '>=', $till)
     ->orWhere('end', '<=', $from)
     ->get();
$from=min($start\u date,$end\u date);
$till=max($start\u date,$end\u date);
DB::表('booked')
->其中('start','>=',$till)

->或者在哪里('end','your end_date
2020-09-27 11:00:00
在给定的范围内,并且以相反的方式告诉您是的,这就是重点,如果它在给定的范围内,那么我不希望它出现在结果中。如果不在给定的范围内。因此,如果任何参数开始或结束日期在给定的日期范围内,您不希望包含确切地说,只有给定的日期范围存储在数据库中,而另一个范围是可变的。因此,我想检查变量是否不在存储的范围内。只是为了澄清一下。假设数据库中的数据是
start-10,end=12
,现在如果输入范围是
start=8,end=9
=>是,
start=9,end=11
=>否,
 start=11,end=11:30
=>不,
start=11,end=13
=>不,
start=13,end=14
=是。如果是这样,会给你一个查询它假设你在数据库中有正确的(逻辑上的)数据。嗯,这太好了!非常感谢你,我只是在过去的两个小时里处理了这个问题,我不明白为什么不能正常工作!(可能我需要休息)干杯!这真的很有效,但我有个问题。如果数据库中有更多的日期,那么它就不工作了,知道吗?你说的“更多日期”是什么意思?什么不工作了?请描述一下。