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

如何基于当前日期计算3年前对应年份的年初首日(1月1日)

SQL 3年前年初日期筛选条件实现

核心逻辑为:先计算当前日期减3年的结果,再将该日期截断为对应年份的1月1日即可,以下为不同数据库环境的可用写法,所有写法均避免对筛选字段做函数运算,可正常命中日期类型索引,查询效率更高:

  • SQL Server 环境(2012及以上版本,可读性最高)

    WHERE datefield >= DATEFROMPARTS(YEAR(DATEADD(YEAR, -3, GETDATE())), 1, 1)
    

    若使用不支持DATEFROMPARTS的老版本SQL Server,可改用兼容写法:

    WHERE datefield >= DATEADD(YEAR, DATEDIFF(YEAR, 0, DATEADD(YEAR, -3, GETDATE())), 0)
    
  • MySQL 环境

    WHERE datefield >= MAKEDATE(YEAR(CURRENT_DATE) - 3, 1)
    
  • PostgreSQL 环境

    WHERE datefield >= date_trunc('year', current_date - interval '3 years')
    
  • Oracle 环境

    WHERE datefield >= TRUNC(ADD_MONTHS(SYSDATE, -36), 'YEAR')
    

内容的提问来源于stack exchange,提问作者Pushpin29

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 09:57:04