Oracle APEX 5.1:统计当前年度区间数据的正确SQL查询写法
解决Oracle APEX中统计特定年份范围格式记录数的问题
嘿,你的问题出在对SYSDATE的处理上——直接用SYSDATE拼接会把完整的日期(比如05-NOV-24)转成默认格式的字符串,而且SYSDATE+1只是给日期加一天,不是加一年,这肯定得不到你要的当前年份-当前年份+1格式哦。
给你两个靠谱的写法,选哪个都行:
方法一:提取年份直接拼接
这个方法先把当前年份转成字符串,再拼接上“-”和下一年的年份字符串,逻辑清晰直观:
SELECT COUNT(*) FROM tablename WHERE Col1 = TO_CHAR(SYSDATE, 'YYYY') || '-' || TO_CHAR(EXTRACT(YEAR FROM SYSDATE) + 1, 'YYYY');
方法二:用ADD_MONTHS获取下一年年份
如果觉得提取年份再加1有点麻烦,也可以用ADD_MONTHS把当前日期加12个月,再提取下一年的年份:
SELECT COUNT(*) FROM tablename WHERE Col1 = TO_CHAR(SYSDATE, 'YYYY') || '-' || TO_CHAR(ADD_MONTHS(SYSDATE, 12), 'YYYY');
额外小提示
如果你的Col1字段可能存在格式不一致的情况(比如有多余空格、大小写差异),可以用TRIM来兼容,避免因为小细节导致统计不准:
SELECT COUNT(*) FROM tablename WHERE TRIM(Col1) = TO_CHAR(SYSDATE, 'YYYY') || '-' || TO_CHAR(EXTRACT(YEAR FROM SYSDATE) + 1, 'YYYY');
这样就能准确统计出格式为当前年份-当前年份+1的记录数啦~
内容的提问来源于stack exchange,提问作者blank
相关产品推荐
相关产品推荐

