You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:08:10