SQL 服务器 - 在 SQL 查询舍入错误中减去时间



我有一个查询,可以计算从包括时间在内的日期开始的工作小时数。

例如,2011/1/07 7:00:00 AM - 1/07/2011 17:40:00 - 0.5 = 10.166666

该 SQL 是

    SELECT    entityID, StaffID, ActualDate, 
    DATEDIFF(minute, StartTime, EndTime) / 60.0 lunch AS HoursWorked
    FROM      dbo.qasiteTimesheet

StartTimeEndTime都是datetime类型。 Lunchnumeric(9,1).

如果我添加整小时,例如上午 6:00

至下午 5:00,它工作正常,但添加 34、10、2 它会错误地四舍五入。

我做错了什么?

60.0是十进制(3,2(,小数除法的规则非常复杂。

lunch小数(9,1(,所以这里的精度永远不会超过 6 分钟

总而言之,这是一个简单的精度问题。

我不会完全解决它(你可以在这里看到我的答案(,所以试试这个,或者一个明确的 CAST,或者一些组合

(DATEDIFF(minute, StartTime, EndTime) - (60.0*lunch)) / 60.0 - AS HoursWorked

最新更新