create or replace function zx_jx_func_istimecross(dbstartdate in date,
db_enddate in date,
startdate IN date,
enddate IN date) return number is
result number;
begin
result := 0;
if (startdate < dbstartdate) then
--开始时间 < 已经存在的开始时间
if (enddate >= db_enddate) then
--结束时间 >= 已经存在的的结束时间 说明有交集
result := 1;
end if;
end if;
if (startdate >= dbstartdate) then
--如果请假开始时间>应上班时间,只要在下班时间之前,则也说明有集
if (startdate <= db_enddate) then
result := 1;
end if;
end if;
return(result);
end zx_jx_func_istimecross;
还可以使用sql过滤:思路如下,(aa.startdate between bb.startdate and bb.enddate or
aa.enddate between bb.startdate and bb.enddate or
bb.startdate between aa.startdate and aa.enddate or
bb.enddate between aa.startdate and aa.enddate)