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

如何调整SQL过滤条件以获取包含完整年度的近5年数据

方案实现

你原有的语句是按当前日期倒推5年的精确时间点,调整后只需要把倒推出来的日期截断到当年1月1日零点即可,适配SQL Server(你当前使用的DATEADD、GETDATE均为SQL Server原生函数)的写法如下:

WHERE CreatedDate >= DATEFROMPARTS(YEAR(DATEADD(YEAR, -5, GETDATE())), 1, 1)

逻辑说明

  • 先通过DATEADD(YEAR, -5, GETDATE())得到5年前的当前日期
  • 再用YEAR()提取该日期对应的年份,配合DATEFROMPARTS()拼接成当年1月1日的日期
  • 条件符从>改为>=,避免漏掉1月1日零点产生的记录

低版本SQL Server兼容方案(2008及之前无DATEFROMPARTS的场景)

可以用字符串拼接转日期的写法实现相同效果:

WHERE CreatedDate >= CAST(CAST(YEAR(DATEADD(YEAR, -5, GETDATE())) AS VARCHAR(4)) + '-01-01' AS DATETIME)

其他常见数据库适配写法

  • MySQL 版本:
WHERE CreatedDate >= DATE_SUB(CONCAT(YEAR(CURDATE()), '-01-01'), INTERVAL 5 YEAR)
  • PostgreSQL 版本:
WHERE CreatedDate >= date_trunc('year', CURRENT_DATE - INTERVAL '5 years')

内容的提问来源于stack exchange,提问作者M.Ustun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:04