SQL Server的操作数类型冲突:int与日期不兼容“错误

kadbb459  于 2023-01-12  发布在  SQL Server
关注(0)|答案(1)|浏览(878)

我想给数据库创建一个成员资格限制。为此,我使用ALTER命令添加。然后我想用一个函数返回成员资格结束前剩余的月数,但我得到了错误
操作数类型冲突:int与date不兼容。
我在尝试创建函数时收到错误。这正是它的情况:
消息206,级别16,状态2,过程getMembershipExpiration,第1行操作数类型冲突:int与date不兼容

ALTER TABLE Member
ADD Membership_End_Date DATE DEFAULT '2099-01-01' not null

CREATE FUNCTION getMembershipExpiration(@Member_ID int)
RETURNS date
AS
BEGIN
    DECLARE @endDate date = (SELECT Membership_End_Date FROM Member WHERE Member_ID =@Member_ID)
    
    DECLARE @nnow date = (SELECT GETDATE())
    
    DECLARE @remainingMonth date = (SELECT DATEDIFF(MONTH,@nnow ,@endDate ))
    
    RETURN @remainingMonth
END

作为一种解决方案,有人建议将日期部分放在引号中,并以YYYY-MM-DD模式编写,但这并没有使我找到解决方案。

tag5nh1u

tag5nh1u1#

DATEDIFF返回int,而不是date。将第5行替换为:

RETURNS int

第12行:

DECLARE @remainingMonth int = (SELECT DATEDIFF(MONTH,@nnow ,@endDate ))

相关问题