MySQL考勤表拆分日期时间,取最小为签到最大为签出实现咨询
MySQL考勤表按天统计签到签出方案
实现SQL
假设你的考勤表名为attendance,用户唯一ID字段为user_id,打卡时间字段为clock_time,可直接使用以下查询语句:
SELECT user_id AS id, DATE(clock_time) AS `date`, MIN(clock_time) AS checkin, MAX(clock_time) AS checkout FROM attendance GROUP BY user_id, DATE(clock_time);
逻辑说明
- 用MySQL内置的
DATE()函数从完整的日期时间字段中提取出纯日期,作为分组维度 - 聚合函数
MIN()返回单个用户单日所有打卡记录里的最早时间,对应签到时间 - 聚合函数
MAX()返回单个用户单日所有打卡记录里的最晚时间,对应签出时间 - 分组条件设置为用户ID和提取出的日期,确保每个用户每天只会生成一条统计结果
如果你的表名、字段名和示例不同,替换SQL中对应的表名、字段名即可正常执行。
内容的提问来源于stack exchange,提问作者Muhammad Ayub
相关产品推荐
相关产品推荐

