sql 返回两个时间差

在园子已经看了好久的博客,本着共享的原则,一起进步,如写的有过错还请各位大神指出。

在写Sql语句时相信大家会遇到关于时间差的问题,如果我们直接返回分钟如348分钟,这种做法显然不明智,我们的客户也不能直观的看出是**天**分钟**秒,下面这段sql脚本 希望能帮到你。

返回的格式:自己可以随意指定

-- =============================================
-- Author:    elivs
-- Create date: 2015-11-12
-- Description:    根据开始时间和结束时间得到时间差
--    返回结果:1天1小时3分
-- =============================================

CREATE FUNCTION [dbo].[fn_GetDayHourMinute]
(
-- Add the parameters for the function here
@startTime datetime,
@endTime datetime
)
RETURNS nvarchar(100)
AS
BEGIN
  declare @rst nvarchar(500)
  declare @day int
  declare @hours int
  declare @minute int

  set @rst=''
  set @day=floor(datediff(minute,@startTime, @endTime) / 1440)
  set @hours=floor((datediff(minute,@startTime, @endTime) % 1440)/60)
  set @minute=((datediff(minute,@startTime, @endTime))-
           (floor(datediff(minute,@startTime, @endTime) / 1440) *1440)-
           (floor((datediff(minute,@startTime,@endTime) % 1440)/60)*60))
  --print @day print @hours print @minute
  if(@day>0)
     set @rst=cast(@day as varchar) +'天'
    if(@hours>0)
       set @rst=@rst+cast(@hours as varchar)+'小时'
   if(@minute>0)
          set @rst=@rst+cast(@minute as varchar)+'分'

  RETURN @rst
 

posted @ 2015-11-17 14:04  Elvis.cao  阅读(708)  评论(0)    收藏  举报