Oracle中如何自动获取下一年的第一天(动态年份)
Oracle自动获取下一年第一天的实现方法
要自动获取下一年的第一天并按01-JAN-24格式输出,且年份随当前时间自动适配,可以利用Oracle内置的日期函数实现,以下是几种可靠的写法:
方法一:通过日期截断与月份偏移实现
这是最简洁的方式,利用日期函数直接计算下一年年初:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 12), 'DD-MON-RR') AS next_year_first_day FROM DUAL;
各部分作用:
TRUNC(SYSDATE, 'YYYY'):将当前日期截断至当年1月1日ADD_MONTHS(..., 12):给当年年初日期加12个月,得到下一年的1月1日TO_CHAR(..., 'DD-MON-RR'):将日期格式化为目标样式,其中RR格式符会自动适配年份显示(2023年时输出24,2024年时输出25)
方法二:通过年份提取拼接实现
如果更习惯基于年份数值计算,可采用这种写法:
SELECT TO_CHAR(TO_DATE(EXTRACT(YEAR FROM SYSDATE) + 1 || '-01-01', 'YYYY-MM-DD'), 'DD-MON-RR') AS next_year_first_day FROM DUAL;
各部分作用:
EXTRACT(YEAR FROM SYSDATE) + 1:提取当前年份并加1,得到下一年的年份数值TO_DATE(..., 'YYYY-MM-DD'):将拼接的年份与固定的-01-01字符串转换为日期类型TO_CHAR(..., 'DD-MON-RR'):同样格式化为目标日期样式
强制英文月份缩写(可选)
如果数据库的NLS_DATE_LANGUAGE设置不是英文,MON格式符可能显示其他语言的月份缩写,可强制指定英文:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), 12), 'DD-MON-RR', 'NLS_DATE_LANGUAGE=ENGLISH') AS next_year_first_day FROM DUAL;
内容的提问来源于stack exchange,提问作者Miko
相关产品推荐
相关产品推荐

