Hi.165 2022-06-27 16:22 采纳率: 25%
浏览 39

SQL server 考勤报表问题

开发考勤报表 上班期间 上午8.30-11.30 下午13.00-18.00 外出和返回打卡间隔超过一小时记录(午休时间不算)
用了 Employee 考勤表 AttendanceCollect 数据采集表

SELECT
E.CnName AS 姓名,
A.Date AS 刷卡日期,
A.Time AS 刷卡时间,
A.CardCode AS 员工ID ,
A.AttendanceCollectId AS 刷卡数据ID,
CONVERT(nvarchar(30),A.date,23) 日期,
convert(varchar,min(A.date),8) 开始时间,
convert(varchar,max(A.date),8) 结束时间,
DATEDIFF(minute,convert(varchar,min(A.date),8),
convert(varchar,max(A.date),8 )) 间隔时间
FROM AttendanceCollect AS A
LEFT JOIN Employee AS E
ON A.EmployeeId=E.EmployeeId
where
((convert(varchar,A.date,8) >= '8:30') and (convert(varchar,A.date,8) <= '11:30') ) or
((convert(varchar,A.date,8) >= '13:00') and (convert(varchar,A.date,8) <= '18:00') )
group by A.EmployeeId,
E.CnName,
A.Date,
A.Time,
A.CardCode,
A.AttendanceCollectId,
(CONVERT(nvarchar(30),A.date,23))

img

不显示间隔时间 而且 如果查我自己的话 我是22年四月一入职的 记录上确有20年的记录
实在不知道该怎么写了

  • 写回答

1条回答 默认 最新

  • 冰山76 2022-06-28 10:42
    关注

    时间间隔是两条刷卡时间之间的间隔,要符合是同一天,这个规则才能计算,刷卡间隔是根据刷卡时间进行计算,而不是在刷卡记录中显示,当然可以通过刷卡时间计算是否有合适的时间间隔

    评论

报告相同问题?

问题事件

  • 创建了问题 6月27日

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题