获取在特定日期范围内处于活动状态的员工

时间:2014-07-08 15:51:10

标签: sql oracle

如何获取在特定日期范围内活跃的在职员工列表(2014年1月1日至2014年3月31日)

我的桌子就像 表: 的 employeeheader

  • EMPID
  • 姓名
  • 名字

emphistory

  • empid
  • begindate
  • 结束日期

如果enddate为null,则表示员工仍处于活动状态。

3 个答案:

答案 0 :(得分:1)

SELECT * FROM employeeheader
JOIN emphistory ON employeeheader.empid = emphistory.empid
WHERE begindate <= <range_start> AND (enddate is null OR enddate >= <range_end>)

这使得所有员工在特定范围内完全工作。

答案 1 :(得分:0)

这样的事可能会奏效 - 我实际上没有测试过它。

where begindate < the day after your end date
and nvl(enddate, sysdate) >= your start date

由于oracle日期包含一天中的时间,因此您需要考虑它,以防万一。

答案 2 :(得分:0)

此查询可以提供帮助

SELECT * FROM employeeheader
WHERE empid IN
(SELECT empid FROM emphistory
 WHERE (enddate IS NULL OR enddate>= EndDateParameter) 
        AND begindate<=BeginDateParameter)