如何在sql中将分钟转换为小数表示小时数?

时间:2014-06-30 09:34:21

标签: sql time casting

我有分钟 140.小时和分钟变为2:20。

在这种情况下,我希望得到2.33。

我尝试了什么:

select cast(140/60 as varchar(8)) + '.' + cast((140 % 60) as varchar(8))

输出: 2.20

select 140/60

输出:2

select cast(140/60 as decimal(5,2))

输出:2.00

我缺少什么?

如何将140分钟转换为十进制小时数?

2 个答案:

答案 0 :(得分:2)

对于快速评论感到抱歉,我会尝试更清楚地解释一下这个问题。

默认情况下,Sql会“认为”你的红利和& divisor是INT数据类型,这就是它返回2的原因。

如果您指定带小数的数字,请执行以下操作:

select (140.00/60.00)

现在数据类型不再是int,结果是:2.3333333

因此,您需要将其中一种数据类型转换为float,decimal,numeric(n,n)以获得准确的结果:

select cast(140 as decimal(5, 2)) / cast(60 as decimal(5, 2)) 

但你仍然可以只转换股息或除数,如下所示:

select 140 / cast(60 as decimal(5, 2)) 

select cast(140 as decimal(5, 2)) / 60

它们都给出了相同的结果,因为结果类型是具有更高优先级的参数的数据类型,在这种情况下,decimal的优先级高于int

你可以在这里阅读更多内容:

答案 1 :(得分:1)

试试这个

Select convert(decimal(5,2),convert(float,140)/60)

Select cast(140.00/60 as decimal(5,2))