Sql 十进制值到HH.MM的转换问题。0.33333十进制值未显示为00.20分钟

Sql 十进制值到HH.MM的转换问题。0.33333十进制值未显示为00.20分钟,sql,tsql,Sql,Tsql,我在转换小数点时遇到问题,例如0.33333,它需要显示为20分钟。用我的公式,它显示为19分钟。我希望有人能帮忙。非常感谢。目前我正在使用的代码是示例 declare @value float = 0.3333333 select Cast(CONVERT(VARCHAR, CONVERT(INT, Floor(cast(@VALUE as Decimal (10,2))))) + '.' + CONVERT (VARCHAR, CONVERT(INT, (cast(

我在转换小数点时遇到问题,例如0.33333,它需要显示为20分钟。用我的公式,它显示为19分钟。我希望有人能帮忙。非常感谢。目前我正在使用的代码是示例

declare @value float = 0.3333333
select
Cast(CONVERT(VARCHAR, CONVERT(INT, Floor(cast(@VALUE as Decimal (10,2))))) 
            + '.' + CONVERT (VARCHAR, CONVERT(INT, (cast(@value as Decimal (10,2)) - Floor(cast(@VALUE as Decimal (10,2)))) * 60.0)) as Decimal(10,2)) [hh.mm],
            cast(@value as money) [DecimalHours]

如果使用日期/时间函数,可能会容易得多:

SELECT FORMAT( DATEADD(n,ROUND(60.0 * @value,0) ,0) , 'HH:mm')

如果使用日期/时间函数,可能会容易得多:

SELECT FORMAT( DATEADD(n,ROUND(60.0 * @value,0) ,0) , 'HH:mm')
工作时间超过24小时


工作时间超过24小时

如果保留更多小数,并跳过下限,会发生什么?时间值的货币数据类型?因为它是19.999998分钟,而不是20分钟。也许你需要绕圈子而不是坐在地板上。这能回答你的问题吗?谢谢你的链接,这一个的问题是,当我处理超过24小时的小时,它不能正确显示。例如,我可能有498.3333作为一个数字,然后需要理想地显示为498.20。谢谢,我会尝试取整如果你保留更多的小数,跳过楼层会发生什么?时间值的货币数据类型?因为它是19.999998分钟,而不是20分钟。也许你需要绕圈子而不是坐在地板上。这能回答你的问题吗?谢谢你的链接,这一个的问题是,当我处理超过24小时的小时,它不能正确显示。例如,我可能有498.3333作为一个数字,然后需要理想地显示为498.20。谢谢你,我会试试转轮的,这个很好用。非常感谢你,尽管如此,这工作还是很好的。非常感谢你,谢谢,但这在24小时内都不起作用。所以像498.08这样的数字返回为18:05。这需要显示为498.05。dnoeth的以下解决方案实现了这一点。再次感谢你,谢谢,但这在24小时内都不起作用。所以像498.08这样的数字返回为18:05。这需要显示为498.05。dnoeth的以下解决方案实现了这一点。再次感谢你