操作数类型冲突:date与dateadd中的int不兼容

时间:2017-01-04 15:26:18

标签: sql-server

以下查询有效:

select dateadd(m, -5, getdate() - datepart(d, getdate()) + 1)

但是当我尝试将getdate()替换为特定日期时,请执行以下示例:

select dateadd(m, -5, (convert(DATE,'2017-01-04') - (datepart(d, getdate()) + 1)))

我收到错误Operand type clash: date is incompatible with int

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是因为GETDATE()返回DATETIME数据类型,您可以-1+1使用Datetime值,但不能使用Date值。

如果您稍微更改了一下查询,请转换为datetime而不是Date它会正常工作。

select dateadd(   m
               , -5
               , (convert(DATETIME,'2017-01-04') - (datepart(d, getdate()) + 1))) 

                              ^-- Datetime instead of Date