最近项目中业务需要,写了这个函数,望各位大虾们帮忙指正不足之处^_^
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetDateSubtract]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[GettDateSubtract]
GO
CREATE FUNCTION [dbo].[GetDateSubtract]
(
@StartDate datetime,--开始日期
@EndDate datetime --结束日期
)
RETURNS nvarchar(100)
AS
BEGIN
DECLARE @dt1 AS datetime, @dt2 AS datetime;
SELECT @dt1 = @EndDate, @dt2 = @StartDate;
DECLARE @Days AS int, @Hours AS int, @Minutes AS int, @Seconds AS int , @Str AS Nvarchar(100);
IF(@dt1 is null or @dt2 is null)
RETURN NULL;
SET @Seconds = DATEDIFF( second, @dt2, @dt1);
SET @Days = @Seconds / (24 * 60 * 60)
SET @Seconds = @Seconds - @Days * 24 * 60 * 60
SET @Hours = @Seconds / (60 * 60);
SET @Seconds = @Seconds - @Hours * 60 * 60
SET @Minutes = @Seconds / 60;
SET @Seconds = @Seconds - @Minutes * 60;
IF(@Days != 0)
BEGIN
SET @Str = CONVERT(varchar(10), @Days ) + '天' + CONVERT(varchar(10), @Hours ) + '小时' +
CONVERT(varchar(10), @Minutes ) + '分' + CONVERT(varchar(10), @Seconds ) + '秒';
IF(@dt1 > @dt2)
BEGIN
SET @Str = REPLACE(@Str,'-','')
END
ELSE
BEGIN
SET @Str = '-' + REPLACE(@Str,'-','')
END
END
ELSE
BEGIN
SET @Str = CONVERT(varchar(10), @Hours ) + '小时' +
CONVERT(varchar(10), @Minutes ) + '分' + CONVERT(varchar(10), @Seconds ) + '秒';
SET @Str = REPLACE(@Str,'-','')
END
RETURN @Str
END
查询结果: