我在争取下一个财政日期。但我错了。当我想启动else语句时,出现了一个错误。
declare @kdate date = '2020-07-25'
declare @Period int = 30 -- in days
declare @nextkdate date
declare @Voption int = 12 -- in months
declare @End date = '2020-08-31'
If @kdate < dateadd(day, -@Period, @End)
set @nextkdate = @End
Else set @nextkdate = @End + (dateadd(month, @Voption, @End))
select @nextkdate
我的错在哪里?谢谢!
2条答案
按热度按时间lf5gs5x21#
只是使用
dateadd
独自一人:呼叫
dateadd
已经添加@Voption
月到月@End
日期。oxf4rvwz2#
表达式
@End + (dateadd(month, @Voption, @End))
这就是问题所在。@End
被宣布为date
.+ (Addition)
说:论据
表达
是数字类别中除位数据类型之外的任何一种数据类型的任何有效表达式。不能与date、time、datetime2或datetimeoffset数据类型一起使用。
根据数据类型优先级和隐式转换的规则,从
date
数字类型,例如。int
. 因此出现错误“操作数数据类型日期对于add运算符无效”