退还在本月上半月被雇用的员工

时间:2013-07-04 20:29:44

标签: sql oracle date-arithmetic

如何退回本月上半月雇用的表hr.employees中的员工姓名,即该月的1日至15日。

2 个答案:

答案 0 :(得分:1)

SELECT 
  *
FROM
  Employee e
WHERE
  TO_NUMBER(TO_CHAR(e.DateHired, 'DD')) <= 15

答案 1 :(得分:1)

从技术上讲,15日不是本月的上半月。这可能是第14次。

要获得上半年你必须计算出当月的最大天数,然后除以2,向下或向上(我总是向下舍入)以得到你月中的天数需要选择。

然后你需要将这个数字添加到月初,减去一个,因为月份从第一个开始。

您还需要限制以确保您在同一个月查看。

select *
  from employee
 where trunc(datehired) <= trunc(sysdate, 'mm') 
                          + floor(to_number(to_char(last_day(sysdate),'DD'))/2)
                          - 1
   and trunc(datehired,'mm') = trunc(sysdate, 'mm')