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

SQL Server 2012中如何提取指定日期早一年的记录?

解决SQL Server中筛选指定日期早一年记录的问题

嘿,我来帮你搞定这个需求!你之前的语句范围太大,是因为ERSEFFDT < '2017-01-01'会把所有2017年1月1日之前的记录都捞出来,包括2016年之前的,显然不符合你要的“恰好早一年”的要求。下面分两种常见需求给你对应的解决方案:

需求1:找正好是2017/01/01往前推一年当天的记录(即2016/01/01)

直接用DATEADD函数计算目标日期,然后精确匹配:

SELECT * 
FROM #participants_temp 
WHERE ERSEFFDT = DATEADD(year, -1, '2017-01-01')
  AND ERSEFFDT <> '0000-00-00'; -- 排除无效的零日期

需求2:找年份恰好比2017年早一年的所有记录(即2016年全年的记录)

如果你的需求是要2016年的所有数据,用YEAR()函数提取年份后筛选:

SELECT * 
FROM #participants_temp 
WHERE YEAR(ERSEFFDT) = YEAR('2017-01-01') - 1
  AND ERSEFFDT <> '0000-00-00';

额外提示

在SQL Server里,尽量使用'YYYY-MM-DD'这种ISO标准日期格式,避免因为服务器的语言/区域设置不同导致日期解析出错哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:13:03