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

MS SQL Server 如何无需硬编码年份实现YTD数据过滤

MS SQL Server YTD(年初至今)无硬编码查询方案

可以直接通过SQL内置函数动态计算当前年度的年初日期,完全不需要硬编码年份,后续每年也无需调整查询语句。

推荐写法(支持SQL Server 2012及以上版本)

使用DATEFROMPARTS函数可以直观生成当年1月1日的日期,逻辑清晰易读:

SELECT *
FROM 你的表名
WHERE [date] BETWEEN DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AND GETDATE()

全版本兼容写法(支持SQL Server 2008及更早版本)

如果使用的是较老版本的SQL Server,没有DATEFROMPARTS函数,可以用DATEADD搭配DATEDIFF的通用方案计算年初:

SELECT *
FROM 你的表名
WHERE [date] BETWEEN DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) AND GETDATE()

优化建议

  • 如果你的日期字段名和SQL关键字date重名,需要用方括号包裹为[date]避免语法报错
  • 若需要筛选截止到昨日的YTD数据,将结束条件的GETDATE()替换为DATEADD(DAY, -1, GETDATE())即可
  • 若需要完整包含当日所有时段的记录,推荐改用范围判断代替BETWEEN,避免因当前查询时间未到当日结束遗漏数据:
SELECT *
FROM 你的表名
WHERE 
  [date] >= DATEFROMPARTS(YEAR(GETDATE()), 1, 1)
  AND [date] < DATEADD(DAY, 1, CAST(GETDATE() AS DATE))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:21:02