sql查询一段时期里每一天所有员工的打卡记录

2024年11月22日 01:30
有4个网友回答
网友(1):

1、某一位员工在指定时间段里每一天的最早和最迟打卡记录

select min(card_no) card_no,min(fname) fname,min(rec_dat) start_time,max(rec_dat) end_time
from EV_LOG
where  card_no='员工卡号' and evnt_descrp='Access granted'
and convert(varchar(10),rec_dat,120) between '2013-07-01' and '2013-07-16'
group by  convert(varchar(10),rec_dat,120)

 3、 所有员工在指定时间段里每一天的最早和最迟打卡记录

select  card_no,min(fname) fname,min(rec_dat) start_time,max(rec_dat) end_time

from EV_LOG

where  evnt_descrp='Access granted'and 

convert(varchar(10),rec_dat,120) between '2013-07-01' and '2013-07-16'

group by  card_no,convert(varchar(10),rec_dat,120)

2和4就不写了,用datediff(hh,start_time,end_time)就可以了

网友(2):

是这个意思吗?

select card_no, fname,min(开始时间) as 开始时间,max(结束时间)as结束时间,datediff(hh,开始时间,结束时间)
from 表
where 时间 between '开始' and '结束'

不是特明白LZ的意思。感觉是俩个表一个个人的一个所有人的。

网友(3):

用between and 就很好解决。

网友(4):

嘿嘿,考虑考虑