Sql server DateSk中的整数句柄

Sql server DateSk中的整数句柄,sql-server,Sql Server,我有一个DateSurragate键列,我需要一个DateSurragate键的周末列,,, 我创建了一个用户定义的函数 CREATE FUNCTION dbo.fn (@dt date) RETURNS date AS BEGIN DECLARE @result date select @result = dateadd(week, datediff(week, 0, @dt), 4) RETURN @result; END; GO 此函数适用于date,但

我有一个DateSurragate键列,我需要一个DateSurragate键的周末列,,, 我创建了一个用户定义的函数

CREATE FUNCTION dbo.fn (@dt date)
RETURNS date
AS 

BEGIN
    DECLARE @result date
    select @result = dateadd(week, datediff(week, 0, @dt), 4)
       RETURN @result;
END;
GO
此函数适用于date,但当传递像-1和-2这样的值时,它会给出NULL
如果我对确定输入值是否为有效日期的理解没有错误,请告诉我如何更改此函数,以便它可以处理我对tsql不熟悉的整数值

使用ISDATEexpression函数: 例:

同样,在开始时检查函数中的输入参数。 如果您的案例中ISDATE返回0,则在func中引发错误或更改流

   DECLARE @datestring varchar(8)  
    SET @datestring = '12/21/98'  
    SELECT ISDATE(@datestring)