如何在sql中将分钟拆分为天、小时和分钟

Posted

技术标签:

【中文标题】如何在sql中将分钟拆分为天、小时和分钟【英文标题】:How to split minutes into days, hours and minutes in tsql 【发布时间】:2013-05-03 06:02:12 【问题描述】:

我有一个由分钟组成的专栏。是否有任何简单的方法可以将分钟列拆分为仅显示天、小时、分钟的一列?

DURATION              
-----------
67           ==> 1 hour, 7 minutes
1507         ==> 1 day, 1 hour, 7 minutes
23           ==> 23 minutes

我用谷歌搜索了解决方案,但没有找到任何类似的解决方案。我想在报告中展示这一点,但试图找到如何解决这个专栏看起来很有意义。持续时间列的计算是这样的。

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

【问题讨论】:

如果minutes 是您的分钟数,minutes%60 只会给您分钟,(minutes/60)%24 只会给您小时,minutes/(60*24) 只会给您几天。 (提示:% 是模运算符,除法后给出余数)现在做一些花哨的字符串连接/格式化:) 【参考方案1】:

谷歌搜索让我来到这里http://www.sqlservercentral.com/Forums/Topic490411-8-1.aspx

它说......我刚刚测试过它......

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

【讨论】:

【参考方案2】:
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

【讨论】:

以上是关于如何在sql中将分钟拆分为天、小时和分钟的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中将秒转换为天、小时、分钟和秒 [关闭]

如何在 SQL 中将小时、分钟和秒 (HH:mm:ss) 转换为分钟和秒 (mm:ss)

如何将 270921sec 转换为天 + 小时 + 分钟 + 秒? (红宝石)

将秒转换为天、小时、分钟、秒 (MySQL)

如何在 SQL Server 中将“XX 天 XX 小时 XX 分钟”转换为秒?

使用 Duration 对象在 Java 中将天、分钟、小时转换为秒失败