在Oracle中,我需要设置MYDATE的where子句取决于当前年份。 如果月份等于或大于4月,则将MYDATE限制为当前年份(01.01.YEAR - 31.12.YEAR) ELSE将MYDATE限制为比当前时间早的每个日期。
我需要一个纯SQL解决方案,如果可能的话,不需要PL / SQL。我尝试调整我在网络和stackoverflow.com上找到的内容,但语法错误:
SELECT text, mydate
FROM mytable
WHERE
CASE
WHEN to_number(TO_CHAR(sysdate, 'MM')) >= 4 -- if month of current year >= april
THEN mydate >=TRUNC(LAST_DAY(SYSDATE), 'YYYY') --beginning of current year
AND mydate < TRUNC(LAST_DAY(SYSDATE)+1, 'YYYY') -- end of current year
ELSE -- if month of current year < april
mydate < sysdate;
有人可以帮助我吗?
非常感谢你。
答案 0 :(得分:2)
您不需要CASE
。只需{WHES中的AND
/ OR
即可。
SELECT text, mydate
FROM mytable
WHERE
( to_number(TO_CHAR(sysdate, 'MM')) >= 4 -- if month of current year >= april
AND mydate >=TRUNC(LAST_DAY(SYSDATE), 'YYYY') --beginning of current year
AND mydate < TRUNC(LAST_DAY(SYSDATE)+1, 'YYYY') -- end of current year
) OR (
to_number(TO_CHAR(sysdate, 'MM')) < 4
AND mydate < sysdate)
);