获取张三某个日期段内每天的前四次打卡情况
返回结果如下
日期 第一次打卡时间 第二次打卡时间 第三次打卡时间 第四次打卡时间
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
在这个不寻常的春日里作文01-01
四年级下册美术教案-第6课 母亲节的礼物|辽海版 (1)01-01
于是两个人就在一起什么什么作文。01-01
牡蛎的营养价值-牡蛎的功效与作用01-01