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

SQL Server中CASE语句内日期列减整数列报错如何解决

问题根源

  • DATEADD函数参数顺序错误,T-SQL中DATEADD的语法为DATEADD(时间单位, 偏移量, 原始日期),你错误将原始日期列作为偏移量、整数字段作为原始日期传入,触发了日期转整数、整数转日期的类型转换报错
  • ELSE分支直接对日期列和整数字段做减法,仅datetime、smalldatetime两种旧日期类型支持和整数直接运算,如果你使用的是date、datetime2等新日期类型,该写法会直接触发隐式转换错误
  • 你调整方括号无效是因为问题和方括号无关,方括号仅用来处理带空格/特殊字符的标识符,不影响类型转换逻辑

修正方案

所有分支统一使用DATEADD处理日期减法,避免隐式转换问题:

CASE 
    WHEN EVT = 'x' 
        THEN DATEADD(DAY, -[INTEGER COLUMN], [DATE COLUMN]) 
        ELSE DATEADD(DAY, -[INTEGER COLUMN], [DATE COLUMN 2])
END AS y

如果业务逻辑中两个分支的偏移方向不同,按需调整偏移量的正负即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:45:07