获取张三某个日期段内每天的前四次打卡情况
返回结果如下
日期 第一次打卡时间 第二次打卡时间 第三次打卡时间 第四次打卡时间
2013-12-01 08:00:22 12:01:23 13:24:28 18:25:11
2013-12-02 08:50:22 12:03:23 13:04:28 18:05:11
存储过程:
create proc GetEmpAttendRegionNew
@empNo varchar(20),@dtFrom datetime,@dtTo datetime
as
BEGIN
create table #tAttInfo
(EmpNo varchar(20),dt datetime,
FirstPunchTime datetime,SecondPunchTime datetime,
ThirdPunchTime datetime,FourthPunchTime datetime)
declare @dt datetime
set @dt=@dtFrom
declare
@FirstPunchTime datetime, --第一次打卡时间
@SecondPunchTime datetime, --第二次打卡时间
@ThirdPunchTime datetime, --第三次打卡时间
@FourthPunchTime datetime --第四次打卡时间
while @dt<=@dtTo
begin
set @FirstPunchTime=null
set @SecondPunchTime=null
set @ThirdPunchTime=null
set @FourthPunchTime=null
select @FirstPunchTime=PunchTime from AttendRecord where EmployeeNo=@empNo
and Convert(varchar(10),PunchTime,120)=Convert(varchar(10),@dt,120)
order by PunchTime desc --按打卡时间逆序排序 最后一次就是最小时间
select @SecondPunchTime=PunchTime from AttendRecord where EmployeeNo=@empNo
and PunchTime>@FirstPunchTime
and Convert(varchar(10),PunchTime,120)=Convert(varchar(10),@dt,120)
order by PunchTime desc --大于第一次打卡时间 中 最小的 就是第二次
select @ThirdPunchTime=PunchTime from AttendRecord where EmployeeNo=@empNo
and PunchTime>@SecondPunchTime
and Convert(varchar(10),PunchTime,120)=Convert(varchar(10),@dt,120)
order by PunchTime desc
select @FourthPunchTime=PunchTime from AttendRecord where EmployeeNo=@empNo
and PunchTime>@ThirdPunchTime
and Convert(varchar(10),PunchTime,120)=Convert(varchar(10),@dt,120)
order by PunchTime desc
insert into #tAttInfo values (@empNo,@dt,
@FirstPunchTime,@SecondPunchTime,@ThirdPunchTime,@FourthPunchTime)
set @dt=dateadd(day,1,@dt)
end
select * from #tAttInfo
drop table #tAttInfo
END
调用该存储过程,返回一个表格:
exec GetEmpAttendRegionNew '张三','2013-12-01','2013-12-31'
本文来源:https://www.wddqw.com/doc/d355553be87101f69e319548.html
正在阅读:
获取考勤记录每天的前四次打卡时间01-01
因为孩子心情不好发朋友圈的句子01-01
周末做家务语文作文01-01
《哲学分析》注释规范【模板】01-01
兰亭集序字帖繁体01-01
最新随笔100字作文01-01
贵州农村木房翻新改造案例01-01
视频剪辑技巧如何制作出引人入胜的短片故事01-01
江雪古诗径的意思01-01