首页 > 解决方案 > 计数范围 SQL 之间的小时数

问题描述

我试图计算一些用户当月的工作时间,唯一的方法是查看他们制作的作品条目的日期和时间。所以我得到了:

Select  a.EmployeeID, cast(a.fDate as Date) fDate, datepart(HOUR, a.fDate) fHour
From Table 
Group by a.EmployeeID, cast(a.fDate as Date), datepart(HOUR, a.fDate)

这为我提供了按日期划分的生产完成时间的详细信息,但是我想知道该时间范围内的总小时数。例如:

当前结果

我知道员工 xxx 于 2018 年 9 月 1 日在上午 10:00、上午 11:00、下午 12:00 和下午 1:00 注册生产,因此结果将是 4 小时。每个员工都有不同的工作日,所以这是我认为我可以计算出来的唯一方法......

帮助?

标签: sqldatessms

解决方案


您可以使用 fDate 的最小值和最大值的 DATEDIFF,按 EmployeeId 分组和 a.fDate 的日期吗?

例如:

Select  a.EmployeeID, cast(a.fDate as Date) as fDate, min(a.fDate) as TimeIn, max(a.fDate) as TimeOut, (DATEDIFF(mi, min(a.fDate), max(a.fDate)) / 60) as Hours
From MyTable a
Group by a.EmployeeID, cast(a.fDate as Date)

推荐阅读