Sql 获取在特定日期范围内处于活动状态的员工
我如何获得在2014年1月1日至2014年3月31日的特定日期范围内活跃的活跃员工名单 我的桌子像 表: 雇主主管 舞虻 名字 姓氏 经营历史 埃皮德 生 结束日期 如果enddate为空,则表示员工仍处于活动状态Sql 获取在特定日期范围内处于活动状态的员工,sql,oracle,Sql,Oracle,我如何获得在2014年1月1日至2014年3月31日的特定日期范围内活跃的活跃员工名单 我的桌子像 表: 雇主主管 舞虻 名字 姓氏 经营历史 埃皮德 生 结束日期 如果enddate为空,则表示员工仍处于活动状态 SELECT * FROM employeeheader JOIN emphistory ON employeeheader.empid = emphistory.empid WHERE begindate <= <range_start> AND (enddate
SELECT * FROM employeeheader
JOIN emphistory ON employeeheader.empid = emphistory.empid
WHERE begindate <= <range_start> AND (enddate is null OR enddate >= <range_end>)
这给了所有在特定范围内完全工作的员工。类似的东西可能会工作-我实际上没有测试它
where begindate < the day after your end date
and nvl(enddate, sysdate) >= your start date
由于oracle日期包括一天中的时间,因此您需要对其进行说明,以防万一。此查询会有所帮助
SELECT * FROM employeeheader
WHERE empid IN
(SELECT empid FROM emphistory
WHERE (enddate IS NULL OR enddate>= EndDateParameter)
AND begindate<=BeginDateParameter)