【发布时间】:2015-12-06 17:18:02
【问题描述】:
我有一张表,每天存储每个员工的 In_time 和 Out_Time。我想每周或每月计算每个员工的工作时间?我该怎么做?
表结构:
**Empid** : 1 ; 2 ; 3
**Pdate** : 7 aug 15 ; 8 aug 15 ; 9 aug 15
**P_In** : 8:48:21 ; 8:50:10 ; 8:37:00
**P_Out** : 15:07:21 ; 16:45:18 ; 16:47:10
全年以此类推。 Empid - varchar 日期、P_In、P-Out - 日期时间
现在我想计算每个员工每周、每月或给定日期范围之间的总工作时间。 请有人帮助如何在这种情况下应用“group by”。
我做了什么: 有单独的列存储Pin和Pout之间的差异;说它被称为Workhrs。 所以,Workhrs = Pout - Pin
SELECT emp_name, emp_id, minutes_worked = SUM(DATEDIFF(MINUTE, '0:00:00', WorkHRs)) from dailydata group by Emp_Name,Emp_ID
上面的查询将给我每个员工工作的总分钟数数据。但是我想要每周和每月的工作时间。我该怎么做?
【问题讨论】:
-
您尝试的查询在哪里。显示一些努力
-
不要将日期和时间存储在两个不同的列中,而是使用一个时间戳列。这样会容易得多。
-
员工怎么还没来就走了?
-
即使我删除了 Pdate 列,我仍然有两列带有 Pin 和 Pout。
-
[P_In], [P_Out]varchar or time??的数据类型?
标签: sql sql-server tsql