计算mysql中特定用户的总登录注销时间

2024-01-13

mysql> 从计时中选择*;

+--------------+---------------------+-----------------+
| employeeIdNo | employeeLogTime     | employeeLogType |
+--------------+---------------------+-----------------+
|            1 | 2011-08-16 09:53:29 | login           |
|            1 | 2011-08-16 10:45:42 | logout          |
|            1 | 2011-08-16 10:55:29 | login           |
|            1 | 2011-08-16 17:55:39 | logout          |
+--------------+---------------------+-----------------+

我想使用上述数据显示员工的总工作时间。所以我想要一个mysql查询来计算employeeIdNo=1的总时间。我的表名称是timing,employeeIdNo 是表employee 的外键引用。计算后,它应该返回totalLogTime值= 7:52:23。请向我提供适当的查询。提前致谢。


a'r的建议很有意义。另外,在注销时计算每个会话的持续时间是一种更好的方法 - 尽管这没有严格规范化,但它分散了计算的负载......

SELECT ilv.employee, 
SUM(UNIX_TIMESTAMP(logouttime) 
  - IF(logintime IS NULL, 
        UNIX_TIMESTAMP(logouttime), 
        UNIX_TIMESTAMP(logintime)))
FROM (
    SELECT a.employeeId, a.time AS logouttime,
    (SELECT MAX(b.time)
      FROM log b
      WHERE b.employeeId=a.employeeId
      AND b.time<a.time
      AND b.type='login')  as logintime
    FROM log a 
    WHERE a.type='logout'
    AND a.time BETWEEN <range start> AND <range end>
    AND employeeId=1 /* optional */
) ilv
GROUP BY ilv.employeeId
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算mysql中特定用户的总登录注销时间 的相关文章

随机推荐