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

SQL Server中如何提取yyyymm格式年月字段的最近12个月数据

SQL Server查询yyyymm格式整数月份最近12个月数据的方案

你的monthid为存储yyyymm格式的整数字段,以下提供两种常用实现方案:

方案1:日期转换对比(逻辑直观易维护)

无需提前计算月份阈值,直接把monthid转换为日期格式和系统时间对比,适合小数据量、对性能要求不高的场景:

SELECT [年月标识], [属性值]
FROM 替换为你的实际表名
WHERE 
    -- 将int类型的monthid转为当月第一天的日期
    CONVERT(DATE, CONVERT(VARCHAR(6), monthid) + '01', 112) 
    >= 
    -- 计算12个月前的当月第一天,避免当前日期的日部分导致筛选误差
    DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 12, 0)

方案2:纯数值对比(性能更优)

不需要对表字段做函数转换,可以命中monthid字段上的索引,适合大数据量场景:

-- 声明变量计算起止月份阈值
DECLARE @StartMonth INT = CONVERT(VARCHAR(6), DATEADD(MONTH, -12, GETDATE()), 112);
DECLARE @EndMonth INT = CONVERT(VARCHAR(6), GETDATE(), 112);

SELECT [年月标识], [属性值]
FROM 替换为你的实际表名
WHERE monthid BETWEEN @StartMonth AND @EndMonth;

注意事项

  • 以上方案默认是包含当前月份的最近12个月数据,如果需要排除当前月份,把DATEADD(MONTH, -12, GETDATE())调整为DATEADD(MONTH, -13, GETDATE()),结束月份改为CONVERT(VARCHAR(6), DATEADD(MONTH, -1, GETDATE()), 112)即可
  • 如果你的表字段名和示例不同,同步替换SQL中的字段名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:36:03