MySQL 时间函数(答学生问:关于员工考勤查询)

今天有学生问个关于MySQL时间操作的问题,直接看图:

 查询某日人员的出勤时间问题。

我们都知道,企业员工考勤使用打卡方式,每天会记录每个员工的多次打卡记录,最后取每个员工的每天:

上班时间:当日最早时间;

下班时间:当日最晚时间。

所以分析查询每个员工每日考勤记录,需要根据员工分组,当天时间、时间最小和最大,时间格式化等操作,下面举例模拟该问题:

学生表student

 学生考勤表student_attendance

SELECT
	stu.sid,
	stu.sname,
	date_format(min(clock_time), '%H:%i') '入园',
	date_format(max(clock_time), '%H:%i') '出园'
FROM
	student stu,
	student_attendance sa
WHERE
	stu.sid = sa.stuid
        AND DATEDIFF(sa.clock_time, '2018-07-16') = 0
GROUP BY
	stu.sid

 解释:

1.date_format(min(clock_time), '%H:%i')  :

          min(clock_time)  按人员分组后,获取最小时间

          date_format(min(clock_time), '%H:%i')   将获得的时间格式化,获得 “分钟:秒“的格式

          date_format(date,format)  时间格式化,获得满足格式的字符串

                  data表示要格式化的时间

                  format格式   '%Y%m%d%H%i%s'     分别为:%Y 年  %m月   %d日  %H时   %i分   %s秒
       

       date_format(max(clock_time), '%H:%i') '出园'

       语法同上。

  2.DATEDIFF(sa.clock_time, '2018-07-16') = 0

         sa.clock_time为打卡时间

         ‘2018-07-16’为设定的某天,根据项目需求,应该是传递的考勤日期

         datediff(date1,date2)               MySQL 日期相减函数

         date1和date2日期做差,返回相差天数。

         判断当天,日期做差为0,即为当天。

         timediff(time1,time2)               MySQL 时间相减函数

关于MySQL的时间函数,还是需要给大家总结一下,所以请参考《MySQL日期操作函数汇总》文章

猜你喜欢

转载自blog.csdn.net/xueli_jiao/article/details/81086913