ai didi

sql-server - 当我使用日期类型变量而不是硬编码日期时,为什么会出现 "Operand type clash: date is incompatible with int"错误?

转载 作者:行者123 更新时间:2023-12-03 21:36:11 24 4
gpt4 key购买 nike

当我在 WHILE 循环提到的条件中使用日期变量而不是硬编码日期时,为什么会出现“操作数类型冲突:日期与 int 不兼容”错误,这让我有些困惑。

Declare @ddate date='2013-03-25', @MembershipDate date= '2013-03-27',@id int=0
while (@ddate<=DATEADD(mm,3,@MembershipDate)-1)
begin
set @id=@id+1
end

但是如果我像下面提到的那样直接使用硬编码日期,那么我不会收到任何错误

Declare @ddate date='2013-03-25',@id int=0
while (@ddate<=DATEADD(mm,3,'2013-03-27')-1)
begin
set @id=@id+1
end

请告诉我原因。

最佳答案

因为当您使用字符串时,它会隐式转换为日期时间,而 DATEADD 的结果是日期时间。

当您使用日期时,DATEADD 的结果是日期。

这是在 the docs 中指定的

DATEADD (datepart , number , date )

The date argument data type becomes the DATEADD return value data type, except for string literal date values. For a string literal, DATEADD returns a datetime value.

较新的日期和时间数据类型不支持这种类型的算术。您可以将 DATEADDday-1 一起使用,以从中减去一天。无论如何,这更清楚。

关于sql-server - 当我使用日期类型变量而不是硬编码日期时,为什么会出现 "Operand type clash: date is incompatible with int"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840469/

24 4 0
文章推荐: jquery - 向下滚动时使用 jQuery 显示 "Back to top"链接元素
文章推荐: class - IOC 使用 AutoFac 进行内部类
文章推荐: javascript - 用于验证日期时间格式的正则表达式 (MM/DD/YYYY)
文章推荐: dapper - 如何在运行时在 Dapper-Extensions 中更改架构?
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com