获取两个日期之间的时差值

最近项目中业务需要,写了这个函数,望各位大虾们帮忙指正不足之处^_^

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


 查询结果:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值