这里有一个人的五个租房记录,是否有办法检查这5个数据中是否有超过30天的重叠借贷期?
例如(01-FEB-19 20-MAR-19)和(14-FEB-19 25-MAR-19)在30天内有重叠
编辑: 如果有重叠,我正在寻找比较5个数据的答案。因为可能会有其他人在另外3个周期中将其租借3次,所以我不知道如何遍历每个人的整个日期范围并进行检查
谢谢!
START_DAT DATE_RETUN
--------------------
19-FEB-19 20-FEB-19
01-FEB-19 20-MAR-19
14-FEB-19 25-MAR-19
02-FEB-19 22-MAR-19
14-FEB-19 25-FEB-19
答案 0 :(得分:1)
这回答了问题的原始版本。
您可以使用算术计算重叠并检查:
select t.*, t2.*
from t join
t t2
on t.start <= t2.return - interval '30' day and
t.return >= t.start + interval '30' day
where (least(t1.return, t.return) - greatest(t.start, t2.start)) >= 30;
on
子句中的间隔调整只是为了提高效率。
答案 1 :(得分:0)
VarDumper::setHandler(function ($var) {
$cloner = new VarCloner();
$cloner->setMaxItems(-1); // Specifying -1 removes the limit
$dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
$dumper->dump($cloner->cloneVar($var));
});
答案 2 :(得分:0)
在T-SQL中,可以按照以下查询来实现:
选择
p。*来自
(选择T。*,
datediff(day,T.START_DAT,T.DATE_RETUN)作为Overlap_days
来自T)as p 其中p.Overlap_days> = 30