-4

如何从表hr.employees中返回上半月雇用的员工姓名,即当月 1 日至 15 日的日期。

4

2 回答 2

1
SELECT 
  *
FROM
  Employee e
WHERE
  TO_NUMBER(TO_CHAR(e.DateHired, 'DD')) <= 15
于 2013-07-04T20:35:23.623 回答
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')
于 2013-07-04T20:50:36.137 回答