SQL减去小时数

时间:2017-10-16 10:58:46

标签: sql datetime

在SQL中,我有一列A(float),其中包含2173.03值。您可以将其读作2173小时和3分钟。

我在float中有另一列 - (B),其中包含2171.33值。同样的方式你可以读作2171小时和33分钟。

在SQL中我想从A中减去B列。

所以我需要的是在分钟内转换A列的2173,然后再添加3分钟。

Column A: 2173 * 60 + 03 = 1,30,383 Minutes
Column B: 2171 * 60 + 33 = 1,30,293 Minutes

Column A-B = 90 Minutes

我希望结果为1.30。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

你为什么使用这种神秘的格式?为什么不只是小数分钟,小数表示小数是什么意思?

您可以通过执行以下操作转换为小数分钟:

select (floor(cola) - (cola - floor(cola)) * 100.0 / 60)

然后进行减法:

select ( (floor(cola) - (cola - floor(cola)) * 100.0 / 60) -
         (floor(colb) - (colb - floor(colb)) * 100.0 / 60)
       )

然后转换回来,我会使用子查询:

select (floor(decimal_minutes) + 
        (decimal_minutes - floor(decimal_minutes) * 60.0 / 100)
       )
from (select ( (floor(cola) - (cola - floor(cola)) * 100.0 / 60) -
               (floor(colb) - (colb - floor(colb)) * 100.0 / 60)
             ) as decimal_minutes
     ) x

但是,我强烈建议您将列的含义更改为十进制分钟或几秒钟。