首页 > 解决方案 > Laravel 7 DB 仅在日期范围不在日期范围内的情况下查询

问题描述

我有这样的事情:

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

DB::table('booked')
     ->where('start', '<=', $from)
     ->where('end', '>=', $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: 希望我的问题足够清楚。

标签: phpsql

解决方案


如果我让你正确,这就是你所需要的

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

DB::table('booked')
     ->where('start', '>=', $till)
     ->orWhere('end', '<=', $from)
     ->get();

推荐阅读