首页 > 解决方案 > 如何在 SQL 中及时转换 int 列“HH:MM”?

问题描述

如何将int "Hour"Int "Minute"转换为时间,然后获得两个不同时间的百分比?

从我正在使用的int列中获取总时间

Format((SUM([THOURS]) * 3600 + SUM([TMINUTES]) * 60 + SUM([TSECONDS])) / 3600,'00')+':'+Format((SUM([THOURS]) * 3600 + SUM([TMINUTES]) * 60 + SUM([TSECONDS])) % 3600/60,'00') as "Total Time"

我从上面的查询中得到了完美的时间。

但现在我想从我的两个int "Hour"Int "Minute" 列表中 获取百分比计算。在此处输入图像描述

我努力了

DECLARE @MS INT = 235216
select cast(dateadd(ms, @MS, '00:00:00') AS TIME(3))

它不符合我的要求。

有人有同样的想法吗?

标签: sql-server

解决方案


将您的时间字段转换为分钟,然后对分钟进行数学运算。此示例使用两个变量 - 您将使用您的字段名称。

Declare
    @Allotted As Time = '08:00'
    , @Taken As Time = '06:00'

    Select Cast(DateDiff(Minute, '00:00', @Taken) As Numeric(17, 2)) / DateDiff(Minute, '00:00', @Allotted) as Percent_Of_Allotted_Time

推荐阅读