我希望计算一件物品使用了多少小时,使用开始和结束日期进行计算。开始时间和结束时间始终为工作日,但当然可能跨越多个星期。我已经成功地排除了周末,但不确定如何排除非工作时间。
示例:
示例:
declare @d1 datetime, @d2 datetime
select @d1 = '04/25/2014 02:42', @d2 = '04/28/2014 17:14'
select (datediff(mi, @d1, @d2) / 60) - (datediff(wk, @d1, @d2) * 48)
工作时间为周一06:00至周五21:00。
因此,在所述示例中,它返回38,但我认为应该是29。
非常感谢您的帮助!谢谢。
[编辑]
@Fnightangel
我的朋友,你真是个天才!非常感谢。这是一个很好的解决方案——清晰简明,起到了很好的作用:)。
我改进了你的代码(正如你自己所说,它并不完全正确),通过在逻辑的开头添加IF语句:
IF (DATEDIFF(DD, @D1, @D2) <= 0) OR (DATEDIFF(WK, @D1, @D2) * 2 <= 0)
RETURN
(DATEDIFF(MI, @D1, @D2) / 60)
ELSE
....