AMi*_*ico 4 t-sql sql-server-2008
我创建了以下函数来确定两个日期之间的MAX日期.运行函数注释中的一个SELECT语句大约需要00.030到00.050秒.
有更好的表现和更清洁的方式吗?
/* Returns the greater of two dates.
SELECT dbo.fnMaxDate(NULL , NULL)
SELECT dbo.fnMaxDate('1/1/2011', NULL)
SELECT dbo.fnMaxDate(NULL , '1/1/2011')
SELECT dbo.fnMaxDate('1/1/2011', '1/1/2011')
SELECT dbo.fnMaxDate('1/2/2011', '1/1/2011')
SELECT dbo.fnMaxDate('1/1/2011', '1/2/2011')
*/
ALTER FUNCTION dbo.fnMaxDate
(
@Date1 DATETIME,
@Date2 DATETIME
)
RETURNS datetime
AS
BEGIN
DECLARE @Result DATETIME
IF @Date1 IS NULL AND @Date2 IS NULL
SET @Result = NULL;
ELSE IF @Date1 IS NULL
SET @Result = @Date2
ELSE IF @Date2 IS NULL
SET @Result = @Date1
ELSE
IF @Date1 >= @Date2
SET @Result = @Date1
ELSE
SET @Result = @Date2
RETURN @Result
END
Run Code Online (Sandbox Code Playgroud)
ALTER FUNCTION dbo.fnMaxDate
(
@Date1 DATETIME,
@Date2 DATETIME
)
RETURNS datetime
AS
BEGIN
RETURN
CASE
WHEN ISNULL(@Date1, @Date2) > ISNULL(@Date2, @Date1)
THEN ISNULL(@Date1, @Date2)
ELSE ISNULL(@Date2, @Date1)
END
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4985 次 |
最近记录: |