数学舍入取决于十进制值

时间:2014-06-09 14:55:54

标签: sql sql-server-2008 math rounding

我正在从查询中将分钟值插入新表中。新表有两列:插入的[分钟],另一列有一个计算值,将分钟转换为小时。转换成小时时我需要使用数学舍入,例如2.58应该是3小时而6.25应该变成6小时。 我正在使用ROUND函数但由于某种原因它总是将数字向下舍入。即使我使用FLOOR和CEILING,它也总是在2.58到2之间 以下是我的示例代码。

    CREATE TABLE [mytable](
[Minutes] [int] NULL,
[Hours]  AS (case when [Minutes]>(0) then ROUND([Minutes]/(60),0) else (0) end)
    ) ON [PRIMARY]
    INSERT INTO [mytable]([Minutes])
    VALUES ('155')

    INSERT INTO [mytable]([Minutes])
    VALUES ('375')

1 个答案:

答案 0 :(得分:2)

你可以做两件事之一,

1)将Minutes列的数据类型更改为decimal或

2)更改你的case语句并在对它进行任何数学运算之前将分钟值转换为小数

你的陈述可能看起来像这样

case when [Minutes] > 0 then round (cast([Minutes] as decimal)  /60,0 ) else 0 end