以下查询有效:
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
我做错了什么?
答案 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