嘿,伙计们(和女孩们)
有人可以指出在日期范围内验证/搜索日期范围吗?我使用 Laravel PHP,但原始 SQL 也很完美。
我想验证日期范围内是否存在日期范围。基本上我想要一个可靠的验证以避免重叠的日期范围。
示例(以及我目前的概念)(laravel 语法)
->where('start_date','>=',$myrange_start)
->where('start_date','<=',$myrange_end)
这将验证数据库中日期范围内的开始日期
和
->where('start_end','>=',$myrange_start)
->where('start_end','<=',$myrange_end)
这将验证数据库中日期范围内的结束日期
对我也有用的是
->whereRaw('? between start_date and end_date', [$today])
但是,我想要实现的是这样说
->whereRaw('? between start_date and end_date', [$myrange_start, $myrange_end])
看看是否有日期范围
a) 开始:开始时、开始和结束之间、结束时 b) 开始:结束 c) end: 在开始时,在开始和 en 之间,在结束时 d) 在开始日期之前开始并在结束日期之后结束 e) 在开始日期之后开始并在结束日期之前结束
这可能吗?
最佳答案
这是重叠范围问题,引用 this canonical SO answer ,WHERE
子句应该类似于:
WHERE new_start < existing_end
AND new_end > existing_start;
将其转换为 Laravel 代码:
->where('start_date', '<', $myrange_end)
->where('start_end', '>', $myrange_start)
如果两个范围之间存在重叠,则返回 true。如果您想知道是否有重叠,那么我们可以尝试:
->where('start_date', '>=', $myrange_end)
->orWhere('start_end', '<=', $myrange_start)
关于php - MySQL:验证费率范围内的日期范围(laravel 可选),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54033928/