如何从考勤数据抓取出每个人每天的两条有效考勤数据(上班、下班)

wp_wuming 2014-05-30 02:12:58
所有考勤数据已经从考勤机取出来了但是怎么筛选出有效的数据,就是取出每个人每天上班和下班的有效数据其他的多次打卡记录不计算在内。考勤记录字段如下:
考勤记录ID 员工ID 打卡时间 打卡机号
上班时间8:30 下班时间17:30
...全文
1249 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinxionglu2009 2014-06-02
  • 打赏
  • 举报
回复
分组排序,按照当天最早和最晚的一次打卡记录作为上下班记录就行了,上面已经有人回答了
lzw_0736 2014-05-31
  • 打赏
  • 举报
回复
必須設定有效考勤時間範圍,比如:8:15~8.45為上班有效考勤時間範圍
Q315054403 2014-05-31
  • 打赏
  • 举报
回复
这是规则和设计的问题 比如8:00~12:00,有人10:00打了一次卡,你当是上班还是下班?? 考勤是个繁琐的东西,得根据企业的实际情况设计
wp_wuming 2014-05-30
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
上班时间8:30 下班时间17:30 这个是字段还是查询结果? 如果是查询结果的话 select 员工ID,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID 这样就直接查询出来了
这个时间是我们公司的上下班时间
wp_wuming 2014-05-30
  • 打赏
  • 举报
回复
引用 7 楼 shinger126 的回复:
2008才支持date和time类型的数据,如果是2008之前的版本,自己改下代码去转换日期和时间 [quote=引用 5 楼 shinger126 的回复:] select 员工ID, cast(打卡时间 as date) 日期, min(cast(打卡时间 as time)) 上班时间, max(cast(打卡时间 as time)) 下班时间 from 考勤记录 group by 员工ID,cast(打卡时间 as date)
[/quote] 我的是用的2008,筛选数据是写个服务还是直接在数据库中搞,我要把数据筛出来查到另一张表里,每天定时筛选
wp_wuming 2014-05-30
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 fredrickhu 的回复:] 上班时间8:30 下班时间17:30 这个是字段还是查询结果? 如果是查询结果的话 select 员工ID,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID 这样就直接查询出来了
版主粗心啊,打卡机记录的肯定是n天的数据,只用用户分组取到的是第一次打卡和最后一次打卡数据,中间也许跨了好多天了[/quote] 对了是要按天来取数据的
shinger126 2014-05-30
  • 打赏
  • 举报
回复
2008才支持date和time类型的数据,如果是2008之前的版本,自己改下代码去转换日期和时间
引用 5 楼 shinger126 的回复:
select 员工ID, cast(打卡时间 as date) 日期, min(cast(打卡时间 as time)) 上班时间, max(cast(打卡时间 as time)) 下班时间 from 考勤记录 group by 员工ID,cast(打卡时间 as date)
--小F-- 2014-05-30
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
[quote=引用 2 楼 fredrickhu 的回复:] 上班时间8:30 下班时间17:30 这个是字段还是查询结果? 如果是查询结果的话 select 员工ID,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID 这样就直接查询出来了
版主粗心啊,打卡机记录的肯定是n天的数据,只用用户分组取到的是第一次打卡和最后一次打卡数据,中间也许跨了好多天了[/quote] 好吧 日期掉了
shinger126 2014-05-30
  • 打赏
  • 举报
回复
select 员工ID, cast(打卡时间 as date) 日期, min(cast(打卡时间 as time)) 上班时间, max(cast(打卡时间 as time)) 下班时间 from 考勤记录 group by 员工ID,cast(打卡时间 as date)
Hertz_liu 2014-05-30
  • 打赏
  • 举报
回复
select 员工ID,日期,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID,日期
xdashewan 2014-05-30
  • 打赏
  • 举报
回复
引用 2 楼 fredrickhu 的回复:
上班时间8:30 下班时间17:30 这个是字段还是查询结果? 如果是查询结果的话 select 员工ID,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID 这样就直接查询出来了
版主粗心啊,打卡机记录的肯定是n天的数据,只用用户分组取到的是第一次打卡和最后一次打卡数据,中间也许跨了好多天了
--小F-- 2014-05-30
  • 打赏
  • 举报
回复
上班时间8:30 下班时间17:30 这个是字段还是查询结果? 如果是查询结果的话 select 员工ID,max(打卡时间) as 下班时间 ,min(打卡时间) as 上班时间from tb group by 员工ID 这样就直接查询出来了
xdashewan 2014-05-30
  • 打赏
  • 举报
回复
人员和日期做group by,拿到max和min

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧