oracle SQL -使用Lookback获取sysdate/当前年份的结果

3gtaxfhh  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(193)

我有一个表,其中NUMBER(4)列是MEETINGYEAR。其他列是MEMBERNOATTENDEES
我想写一个查询,查找大于或等于“当前年份”减去3年的MEETINGYEAR,这样我就不必在每年运行查询时手动输入当前年份的值(即:2023)。
本质上,我正在寻找本年度(2023年)或前3年的记录。如果找到,则结果= Y,否则为N。
这是迄今为止我自己做的最好的:

select '4. Annual Meeting Management' Item, 
    decode(count(*),NULL,'N',0,'N','Y') Result 
from member_annual_meeting 
where meetingyear >= '2023'-3;
dy1byipe

dy1byipe1#

SYSDATE是一个Oracle函数,它以DATE数据类型返回当前日期和时间(精确到秒)。
然后,您可以使用to_char()extract函数来提取年份,例如:

SELECT EXTRACT(YEAR FROM SYSDATE), to_char(SYSDATE, 'yyyy') FROM dual;

EXTRACT(YEARFROMSYSDATE) TO_CHAR(SYSDATE,'YYYY')
------------------------ -----------------------
                    2023 2023

请注意,to_char()返回一个字符串,因此您实际上应该在整个字符串周围抛出to_number(),以显式地将其转换为数字。Extract返回一个数字,所以我建议您使用这个数字;不需要额外的数据类型转换。

相关问题