计算时间差-标量值函数

一.计算两时间的时间差(小时:分钟:秒)

-- =============================================
-- 程序名:GetMCBTimeDifferenceByDateTime
-- 创建时间: 2017-07-18
-- 作者:pxq
-- 功能:计算两时间的时间差(小时:分钟:秒)
-- 实例:select [dbo].GetMCBTimeDifferenceByDateTime_New('2018-01-01 10:59:30','2018-01-02 12:30:20') --25:30:50
-- =============================================
CREATE FUNCTION [dbo].[GetMCBTimeDifferenceByDateTime_New]  
(
    @MCBSheetDateTime datetime, --时间
    @NowTime datetime --比较时间
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    --定义需要返回的字段名
    declare @ReturnName nvarchar(max)

     declare @day int  
    declare @hour int  
    declare @min int  
    declare @sec int  
    declare @alls int  
    set @alls=datediff(s,@MCBSheetDateTime,@NowTime)   --时间与时间之间的差 
    set @day=@alls/86400  
    set @hour=(@alls-@day*86400)/3600  
    set @min=(@alls-@day*86400-@hour*3600)/60  
    set @sec=@alls-@day*86400-@hour*3600-@min*60  
    set @ReturnName=(select (case when convert(nvarchar(10), (@day*24+@hour)) is null then '' else convert(nvarchar(10), (@day*24+@hour)) end ))
    set @hour=@day*24+@hour;
    --返回天时分秒
    select @ReturnName=(case when len(@hour)>1 then (cast(@hour as varchar(5))) else ('0'+cast(@hour as varchar(5))) end) +':'+
    (case when len (@min)>1 then CAST(@min as varchar(2)) else ('0'+CAST(@min as varchar(2))) end)
    +':'+
    (case when len (@sec)>1 then CAST(@sec as varchar(2)) else ('0'+CAST(@sec as varchar(2))) end)
    +''
    RETURN @ReturnName
END

计算两时间的时间差(小时:分钟:秒)
计算距离现在的时间差(小时:分钟:秒)

二.计算距离现在的时间差(分钟)

-- =============================================
-- 程序名:GetTimeDifferenceByDateTime
-- 创建时间: 2017-07-18
-- 作者:pxq
-- 功能:计算距离现在的时间差(分钟)
-- 实例:select [dbo].GetTimeDifferenceByDateTime((select '2019-02-27 10:59')) --29
-- =============================================
CREATE FUNCTION [dbo].[GetTimeDifferenceByDateTime]  
(
    @DateTime datetime --时间
)
RETURNS NVARCHAR(MAX)
AS
BEGIN
    --定义需要返回的字段名
    declare @ReturnName nvarchar(max)

     declare @day int  
    declare @hour int  
    declare @min int  
    declare @sec int  
    declare @alls int  
    set @alls=datediff(s,@DateTime,GETDATE())   --时间与时间之间的差 
    set @day=@alls/86400  
    set @hour=(@alls-@day*86400)/3600  
    set @min=(@alls-@day*86400-@hour*3600)/60  
    set @sec=@alls-@day*86400-@hour*3600-@min*60  
    --返回分钟
    set @ReturnName=(select (case when convert(nvarchar(50), ((@day*24+@hour)*60)+@min) is null then '' else convert(nvarchar(50), ((@day*24+@hour)*60)+@min) end ))

    RETURN @ReturnName

END
计算距离现在的时间差(分钟)

猜你喜欢

转载自www.cnblogs.com/panxueqin/p/12736790.html