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_date2020-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
=是。如果是这样,会给你一个查询它假设你在数据库中有正确的(逻辑上的)数据。嗯,这太好了!非常感谢你,我只是在过去的两个小时里处理了这个问题,我不明白为什么不能正常工作!(可能我需要休息)干杯!这真的很有效,但我有个问题。如果数据库中有更多的日期,那么它就不工作了,知道吗?你说的“更多日期”是什么意思?什么不工作了?请描述一下。