首页 > 解决方案 > 如何通过用户ID获取多个条目之间的时间差?

问题描述

我想创建一个考勤表,我从打孔机中获得价值,如下所示:

UID  |  Time
023  |  2019-01-29 20:06:53
023  |  2019-01-29 20:07:10
023  |  2019-01-29 20:22:05
123  |  2019-01-30 08:57:01
027  |  2019-01-30 09:14:14
023  |  2019-01-30 11:22:21
123  |  2019-01-30 18:35:53
027  |  2019-01-30 19:00:25

现在一个表中的所有条目,所以我想要用户的第一个和最后一个条目并按日期分组,然后从 2 个值中获取时间差

我需要这样的输出:

UID  |  In Time               |  Out Time              |  Time Diff.
023  |  2019-01-29 20:06:53   |  2019-01-29 20:22:05   |  00:18:00
027  |  2019-01-30 09:14:14   |  2019-01-30 19:00:25   |  10:00:00
123  |  2019-01-30 08:57:01   |  2019-01-30 18:35:53   |  10:00:00

首先,我尝试获取这样的数据,但这对我不起作用

$select =  mysqli_query ($db, "SELECT *, Min(Date) AS MinDate, Max(Date) AS MaxDate FROM demotable GROUP BY UID");

标签: phpmysql

解决方案


您可以使用TIMEDIFF()

SELECT 
  UID, 
  Min(timecolumn) AS `In Time`, 
  Max(timecolumn)  AS `Out Time`,
  TIMEDIFF(Max(timecolumn), Min(timecolumn)) AS `Time Diff`
FROM demotable 
GROUP BY UID, DATE(timecolumn)

推荐阅读