Sql 如何创建一个函数来减去两个日期?

Sql 如何创建一个函数来减去两个日期?,sql,function,datetime,oracle-sqldeveloper,Sql,Function,Datetime,Oracle Sqldeveloper,我有一个bigdate,一个smalldate,即bigdate大于smalldate,我想通过一个函数实现以下代码。如何将其转换为函数 NUMTODSINTERVAL ( CASE WHEN TRUNC(datebig - datesmall) = 0 THEN datebig - datesmall ELSE( CASE WHEN datebig - TRUNC (datebig) > (21 / 24

我有一个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')

如果您所问的只是如何创建函数,那么将删除目标函数并创建新函数

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())
这将调用您的新函数

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())