Sql 如何创建一个函数来减去两个日期?
我有一个bigdate,一个smalldate,即bigdate大于smalldate,我想通过一个函数实现以下代码。如何将其转换为函数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
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())