用户定义的函数sql,关键字'return'附近的语法不正确

时间:2021-03-11 22:48:31

I'm trying to write a function that takes an input of a date, and calculates the difference between current day and the inputed date, then returns it as an integer of days. (So if I input yesterday 2015-5-8 it returns 1). So far I'm getting this error and can't really figure out what's wrong. Any help is appreciated.

我正在尝试编写一个输入日期的函数,并计算当前日期和输入日期之间的差异,然后将其作为整数天返回。 (所以如果我昨天输入2015-5-8它会返回1)。到目前为止,我收到了这个错误,无法弄清楚出了什么问题。任何帮助表示赞赏。

CREATE FUNCTION DnevnaRazlika
(@OdKdaj nvarchar(15))
RETURNS INT 
AS
BEGIN 
declare @return INT
select @return = DATEDIFF(day,@OdKdaj, CONVERT(date,GETDATE()))
end
return @return 
end

Edit: Using Microsoft SQL management studio

编辑:使用Microsoft SQL管理工作室

3 个解决方案

#1


2  

Too much ends. try below code

结束太多了。尝试以下代码

CREATE FUNCTION DnevnaRazlika ( @OdKdaj NVARCHAR(15) )
RETURNS INT
AS 
    BEGIN 
        DECLARE @return INT
        SELECT  @return = DATEDIFF(day, @OdKdaj, CONVERT(DATE, GETDATE()))
        RETURN @return 
    END

#2


1  

problem here is you are having end two time

这里的问题是你有两次结束

CREATE FUNCTION DnevnaRazlika
(@OdKdaj nvarchar(15))
RETURNS INT 
AS
BEGIN 
declare @return INT
select @return = DATEDIFF(day,@OdKdaj, CONVERT(date,GETDATE()))
--end remove this end than it will work 
return @return 
end

#3


0  

create Function a123(@a Int,@b Int) returns Int as 
begin 
    return (@a + @b)
end

select dbo.a123(30,20)

#1


2  

Too much ends. try below code

结束太多了。尝试以下代码

CREATE FUNCTION DnevnaRazlika ( @OdKdaj NVARCHAR(15) )
RETURNS INT
AS 
    BEGIN 
        DECLARE @return INT
        SELECT  @return = DATEDIFF(day, @OdKdaj, CONVERT(DATE, GETDATE()))
        RETURN @return 
    END

#2


1  

problem here is you are having end two time

这里的问题是你有两次结束

CREATE FUNCTION DnevnaRazlika
(@OdKdaj nvarchar(15))
RETURNS INT 
AS
BEGIN 
declare @return INT
select @return = DATEDIFF(day,@OdKdaj, CONVERT(date,GETDATE()))
--end remove this end than it will work 
return @return 
end

#3


0  

create Function a123(@a Int,@b Int) returns Int as 
begin 
    return (@a + @b)
end

select dbo.a123(30,20)