我有一张员工表。我必须以这样的方式获取所有员工的数据。如果今天我运行查询,那么我必须获取从上一年 12 月 1 日(当前一年 - 1 即 2010 年 12 月 1 日)到今天(4 月 21 日)之间工作的所有员工的数据。如果查询运行日期在 12 月(例如今天是 12 月 15 日),则查询应获取从当年 12 月 1 日(2011 年 12 月 1 日)到 12 月 15 日的数据。
在这种情况下,谁能帮我写下 IF 或 CASE 语句。我写了 if 语句一些它是如何不起作用的。我想使用这个 If 或 Case Statement 作为employee_timestamp 的开始日期。这是否可能在这里。
SELECT e.*
FROM EMPLOYEE e
WHERE e.employee_timestamp > (SELECT TO_DATE(TO_CHAR(CONCAT('12-01-', EXTRACT(YEAR FROM SYSDATE)-1)),'MM/DD/YYYY') AS startdate
FROM DUAL)
AND e.employee_timestamp < (SELECT SYSDATE FROM DUAL)
IF
((SELECT SYSDATE FROM DUAL)) > (select to_date(to_char(concat('11-30-', extract(YEAR FROM sysdate))),'MM/DD/YYYY') as Startdate From DUAL)
THEN (select to_date(to_char(concat('12-01-', extract(YEAR FROM sysdate))),'MM/DD/YYYY') as Startdate From DUAL)
ELSE
(select to_date(to_char(concat('12-01-', extract(YEAR FROM sysdate)-1)),'MM/DD/YYYY') as Startdate From DUAL)
END IF;