操作数类型错误:日期与int不兼容

tv6aics1  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(446)

我在争取下一个财政日期。但我错了。当我想启动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

我的错在哪里?谢谢!

lf5gs5x2

lf5gs5x21#

只是使用 dateadd 独自一人:

if @kdate < dateadd(day, -@Period, @End) 
    set @nextkdate = @End
else 
    set @nextkdate = dateadd(month, @Voption, @End)

呼叫 dateadd 已经添加 @Voption 月到月 @End 日期。

oxf4rvwz

oxf4rvwz2#

表达式 @End + (dateadd(month, @Voption, @End)) 这就是问题所在。 @End 被宣布为 date . + (Addition) 说:
论据
表达
是数字类别中除位数据类型之外的任何一种数据类型的任何有效表达式。不能与date、time、datetime2或datetimeoffset数据类型一起使用。
根据数据类型优先级和隐式转换的规则,从 date 数字类型,例如。 int . 因此出现错误“操作数数据类型日期对于add运算符无效”

相关问题