我有一个查询,其中我有一个日期列(时间),告诉“IN”&这个单一栏目的人们出席的“OUT”时间
我的疑问是: -
1)如何获得每位员工的每日出勤率 2)如何知道员工是否在场时间不到5小时
请告诉我SQL服务器中的查询。
答案 0 :(得分:1)
您需要按用户对查询进行分组,然后针对特定日期对项目进行分组,然后比较最大值和最小值,例如:
declare @users table (
UserId int,
DateColumn datetime
)
insert into @users values (1, '2008-10-31 15:15')
insert into @users values (1, '2008-10-31 10:30')
insert into @users values (1, '2008-10-30 16:15')
insert into @users values (1, '2008-10-30 10:30')
select
UserID
, cast(dt as datetime) dt
, [in]
, [out]
, case when datepart(hour, [out]-[in]) >= 5 then 'yes' else 'no' end [5Hours?],
, cast(datediff(minute, [in], [out]) as float)/60 [hours]
from (
select
UserID
, convert(varchar, DateColumn, 112) dt
, min(DateColumn) [in]
, max(DateColumn) [out]
from @users
group by
UserID, convert(varchar, DateColumn, 112)
) a
答案 1 :(得分:0)
select
datediff(minute, TimeFrom, TimeTo) as AttendedTimeInMinutes,
case when datediff(minute, sTimeFrom, sTimeTo) < 5 * 60
then
'less than 5 hours'
else '5 hours or more'
end
from YourTable
答案 2 :(得分:0)
要查找两个日期时间之间的差异,您可以使用以下内容:
SELECT Datepart(hour, dateTimeEnd - dateTimeStart)
DatePart函数返回日期时间变量的一部分,而dateTimeEnd - dateTimeStart返回两个日期之间的差异作为新的DateTime