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

Oracle SQL筛选当前年份及后续两个滚动年份的日期

Oracle SQL日期筛选解决方案

你的原SQL语句存在两个关键问题:

  1. 仅限制了年份的下限(大于等于当前年),没有设置上限,会包含所有未来年份的数据,不符合“仅保留之后两个滚动年份”的要求。
  2. 未指定起始日期为当前年份的1月1日,若当前日期处于年中,原语句会默认包含当前年的所有日期,但你明确要求从1月1日开始筛选。

根据你的需求(从当前年1月1日起,保留连续两年的日期,总计约730天),提供以下正确的SQL写法:

SELECT "date"
FROM table1
WHERE "date" >= TRUNC(SYSDATE, 'YEAR')
  AND "date" < ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), 24);

语句解释:

  • TRUNC(SYSDATE, 'YEAR'):获取当前年份的1月1日(例如当前是2024年10月,该函数返回2024-01-01),确保筛选起始点符合要求。
  • ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), 24):将当前年1月1日向后推24个月,得到两年后的1月1日。使用<而非<=,是为了确保筛选范围刚好是完整的两年(不包含两年后当天的日期),总时长约730天。
  • 用双引号包裹"date":因为date是Oracle的保留关键字,避免语法冲突。

如果你的实际需求是覆盖当前年、下一年、下下年这三个完整年份(而非严格的两年时长),可以使用以下语句:

SELECT "date"
FROM table1
WHERE "date" BETWEEN TRUNC(SYSDATE, 'YEAR')
                  AND ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), 36) - INTERVAL '1' DAY;

内容的提问来源于stack exchange,提问作者J. Blue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:42:00