mysql:
// 时间
$shiJianKJ = ['开始时间','结束时间'];
$query->where(function($query) use($shiJianKJ){
// 开始时间小于查询开始时间
// 结束时间大于查询结束时间
$query->orWhere(function($query) use($shiJianKJ){
$query->where('start_time', '<', $shiJianKJ[0]);
$query->where('end_time', '>', $shiJianKJ[1]);
});
// 开始时间大于查询开始时间
// 结束时间小于查询结束时间
$query->orWhere(function($query) use($shiJianKJ){
$query->where('start_time', '>', $shiJianKJ[0]);
$query->where('start_time', '<', $shiJianKJ[1]);
});
// 结束时间大于查询开始时间
// 结束时间小于查询结束时间
$query->orWhere(function($query) use($shiJianKJ){
$query->where('end_time', '>', $shiJianKJ[0]);
$query->where('end_time', '<', $shiJianKJ[1]);
});
});
function:
/**
* 验证时间是否有交集,(时间戳大小比较)
*
* @author Eric
* @param $shiJianKJ 查询时间
* @param $times 系统时间
* @return int 1,2,3表示有交集
*/
public function yan_zheng_shi_fou_you_jiao_ji($shiJianKJ, $times)
{
// 系统时间包含查询时间
// 系统开始 <= 查询开始 && 系统结束 >= 查询结束
if($times[0] <= $shiJianKJ[0] && $times[1] >= $shiJianKJ[1])
{
return 1;
}
// 系统开始 >= 查询开始 && 系统开始 <= 查询结束
if($times[0] >= $shiJianKJ[0] && $times[0] <= $shiJianKJ[1])
{
return 2;
}
// 系统结束 >= 查询开始 && 系统结束 <= 查询结束
if($times[1] >= $shiJianKJ[0] && $times[1] <= $shiJianKJ[1])
{
return 3;
}
return 4;
}