我正在从查询中将分钟值插入新表中。新表有两列:插入的[分钟],另一列有一个计算值,将分钟转换为小时。转换成小时时我需要使用数学舍入,例如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')
答案 0 :(得分:2)
你可以做两件事之一,
1)将Minutes列的数据类型更改为decimal或
2)更改你的case语句并在对它进行任何数学运算之前将分钟值转换为小数
你的陈述可能看起来像这样
case when [Minutes] > 0 then round (cast([Minutes] as decimal) /60,0 ) else 0 end