减去SQL查询舍入错误的时间

时间:2011-07-04 05:50:40

标签: sql-server

我有一个查询,用于计算包含时间的日期的工时。

例如1/07/2011 7:00:00 AM - 1/07/2011 5:40:00 PM - 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不正确。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

lunch十进制(9,1)也是如此,所以你的准确度永远不会超过6分钟

放在一起,这是一个简单的精确问题。

我不打算完全解决(你可以看到我的回答here)所以试试这个,或者明确的CAST,或者某种组合

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