比如下面是一个人3月8号的打卡记录,SQL语句如何写能查出08:05:35和23:29:04这两条记录,把重复打卡的记录过滤掉,或者在FineReport报表中有办法过滤掉吗(数据库为MySql)?
select min(打卡时间),max(打卡时间),日期,人 from 表 group by 日期,人
用这个做基础表,然后再查询是否迟到早退之类的。
因为你不是取早上最小的打卡日期,是最晚的
但是你这只是同一个时分下的 如果是早上2021-03-08 08-06-12.000打的卡,那就应该取我这个数了
但是这个时候【时】一样,【分】不一样,很难判断
把日期一个个截取,然后比较相同的年,月,日,时,分下最大的秒数
或者直接把打卡日期分成上班,下班两个字段,都取最大值就行了
select min(日期字段) from 表 最早时间
select max(日期字段) from 表 最迟时间
如果你们公司午休两小时的话
我有个简单的方式
只需在数据库设置两个主键即可
第一个;员工的工号(这个应当唯一吧)
第二个:将上面的时间记录精确到小时( 即截取记录到 2021-03-08 :08 这种精度)存储到数据库中作为主键
这样的话,每个人每小时将只有一条记录,每条记录都是最新的,你可以按照这个思路来结合你那边的实际情况确认下精度,当然帆软也可以搞,数据库简单点