给定两个日期范围,确定两个日期范围是否重叠的最简单或最有效的方法是什么?
举个例子,假设我们有通过日期时间变量表示的范围StartDate1来EndDate1 和 StartDate2到EndDate2.
我有下表有两个字段,即a和b,如下所示:
create table employe
(
empID varchar(10),
department varchar(10)
);
Run Code Online (Sandbox Code Playgroud)
插入一些记录:
insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');
select * from employe;
Run Code Online (Sandbox Code Playgroud)
empID department
------------------
A101 Z
A101 X
A101 Y
A102 Z
A102 X
A103 Z
A103 Y
A104 X
A104 Y
A105 Z
A106 X
Run Code Online (Sandbox Code Playgroud)
注意:现在我想显示仅属于该部门Z且仅属于该部门的员工Y.因此,根据条件,A103应该显示唯一的员工,因为他只属于部门Z和Y.但员工A101不应该出现,因为他属于Z,X, and Y.
预期成果:
如果条件是:Z和Y则结果应该是:
empID
------
A103
Run Code Online (Sandbox Code Playgroud)
如果条件是:Z和X则结果应该是:
empID
------ …Run Code Online (Sandbox Code Playgroud)