2013-12-19 48 views
0

我有一个bigdate,一个smalldate,即bigdate比smalldate更大,我想通过函数实现下面的代码。我如何将其转换为函数?如何创建一个函数来减去两个日期?

NUMTODSINTERVAL (
    CASE 
    WHEN TRUNC(datebig - datesmall) = 0 
    THEN datebig  - datesmall 
    ELSE(
     CASE 
     WHEN datebig   - TRUNC (datebig) > (21/24) 
     THEN TRUNC (datebig) + (21/24) 
     ELSE datebig 
     END - 
     CASE 
     WHEN datesmall   - TRUNC (datesmall) < (11/24) 
     THEN TRUNC (datesmall) + (11/24) 
     ELSE datesmall 
     End) 
    End , 'DAY') 

回答

0

如果你只是问如何创建一个函数,这将放弃目标函数并创建你的新函数。

IF OBJECT_ID (N'dbo.YourNewFunction', N'FN') IS NOT NULL 
    DROP FUNCTION dbo.YourNewFunction; 
GO 
CREATE FUNCTION dbo.ISOweek (@DATESMALL DATETIME, @DATEBIG DATETIME) 
RETURNS INT 
WITH EXECUTE AS CALLER 
AS 
BEGIN 
    -- ENTER FUNCTION 
    RETURN 0 
END 
GO 

而这会调用你的新功能。

SELECT dbo.YourNewFunction(GetDate(), GetDate())