我的时间出勤数据库每行都有下表
EmpCode Date Time 100 2013/10/01 08:00:00 100 2013/10/01 08:14:12 100 2013/10/01 12:55:11 100 2013/10/01 13:00:00 100 2013/10/01 16:01:00 100 2013/10/01 16:01:05 100 2013/10/02 16:01:00 100 2013/10/02 16:30:45 100 2013/10/03 08:25:00 100 2013/10/04 08:04:00 100 2013/10/04 15:55:00
我需要搜索时间范围:
Min(在06:00:00至12:00:00之间)为intime
Max(13:00:00至22:00:00之间)作为停留时间
和intime必须在08:05:00,如果有人迟到,则会在分钟晚些时候显示并强调intime
并且如果有人快速退回并且突显显示停工时间,那么停机时间必须为16:00:00
例如,我需要的结果如下:
EmpCode Date intime outtime late back 100 2013/10/01 08:00:00 16:01:05 100 2013/10/02 16:30:45 forget 100 2013/10/03 08:25:00 20 forget 100 2013/10/04 08:04:00 15:55:00 5
答案 0 :(得分:0)
SELECT
EmpCode,
`date`,
MIN(`time`) AS intime,
MAX(`time`) AS outtime,
IF(TIME_TO_SEC(SUBTIME('8:05:00',MIN(`time`))) < 0, 'late','not late') AS late
FROM
your_table_name
GROUP BY
EmpCode
答案 1 :(得分:0)
结果是
EmpCode日期时间间隔时间
100 2013/10/01 08:00:00 16:01:05
100 2013/10/02 16:30:45 16:30:45
100 2013/10/03 08:25:00 08:25:00
100 2013/10/04 08:04:00 15:55:00
time
)AS intime,MAX(time
)AS outtime,
如果每天只在早上注册结果:
EmpCode日期时间间隔时间
100 2013/10/03 08:25:00 08:25:00
如果每天只在下午登记结果:
EmpCode日期时间间隔时间
100 2013/10/02 16:30:45 16:30:45
如果您可以将忘记时间替换为00:00:00或null
EmpCode日期时间间隔时间
100 2013/10/03 08:25:00 00:00:00
或
EmpCode日期时间间隔时间
100 2013/10/03 08:25:00
非常感谢您提出的问题 抱歉,我的英语不好
warat