Sql server 如何在tsql中将分钟分为天、小时和分钟

Sql server 如何在tsql中将分钟分为天、小时和分钟,sql-server,tsql,datetime,date-conversion,Sql Server,Tsql,Datetime,Date Conversion,我有一个由分钟组成的专栏。有没有简单的方法将分钟列拆分为一列,只显示天、小时、分钟 DURATION ----------- 67 ==> 1 hour, 7 minutes 1507 ==> 1 day, 1 hour, 7 minutes 23 ==> 23 minutes 我在谷歌上搜索解决方案,但我没有找到适合我的类似解决方案。我想在一份报告中说明这一点,但试图找到如何解决这一问题似乎

我有一个由分钟组成的专栏。有没有简单的方法将分钟列拆分为一列,只显示天、小时、分钟

DURATION              
-----------
67           ==> 1 hour, 7 minutes
1507         ==> 1 day, 1 hour, 7 minutes
23           ==> 23 minutes
我在谷歌上搜索解决方案,但我没有找到适合我的类似解决方案。我想在一份报告中说明这一点,但试图找到如何解决这一问题似乎是有意义的。Duration列的计算如下所示

avg(datediff(MINUTE, ei.SentDate, eo.SentDate)) over(partition by ei.mailbox) as DURATION   

谷歌搜索把我带到这里

上面写着。。。我刚刚测试了它的工作

Declare @theMinutes int
Set @theMinutes = 67 

Select @theMinutes / 1440 as NoDays  -- 1440 minutes per day 
       , (@theMinutes % 1440) / 60 as NoHours -- modulo 1440 
       , (@theMinutes % 60) as NoMinutes -- modulo 60

如果
minutes
是你的分钟数,
minutes%60
只给你分钟,
(minutes/60)%24
只给你小时,
minutes/(60*24)
只给你天。(提示:%s是模运算符,在除法后给出余数)现在执行一些奇特的字符串连接/格式化:)
create FUNCTION  fun_Date_Friendly (@minutes int)
RETURNS nvarchar(100)
AS
BEGIN
   return CASE 
    when @minutes < 60 then cast( @minutes as varchar(10)) + ' Min'
    when @minutes < 1440 then cast(@minutes/60 as varchar(10)) + ' Hr, ' + cast(@minutes%60 as varchar(10)) + ' Min'
    else cast(@minutes/(1440 ) as varchar(10)) + ' Days, ' + cast((@minutes%1440 )/60 as varchar(10)) + ' Hr, ' + cast(((@minutes%1440 )%60) as varchar(10)) + ' Min'
    end
end
go
select  dbo.fun_Date_Friendly(20) val