sql - 计数范围 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 小时。每个员工都有不同的工作日,所以这是我认为我可以计算出来的唯一方法......
帮助?
解决方案
您可以使用 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)
推荐阅读
- google-cloud-vision - Cloud Vision API - 空格作为数字分隔符
- node.js - 如何在firebase中删除匿名用户及其文档?
- jquery - 如何通过 jquery 从类中删除属性?
- android - 如何在不同颜色的 CalendarView 中获得圆圈
- python - 确保在等待期间 KeyboardInterrupt 时 with-statement 调用 __exit__()
- sql - 如何为postgres中的所有行生成随机字符串
- java - 为什么像这样处理长数据类型的内存大小会成功?
- nativescript - DatePicker 在 iOS 上不显示?
- node.js - 从嵌套对象数组排序 MongoDB - NodeJS
- c - 如何使用 IORING_OP_READ_FIXED?