登录/注销事件记录在这样的表中:
user_id object_id date_event
7 2 2013-05-03 08:37:11
7 3 2013-05-03 12:43:51
7 2 2013-05-03 15:33:41
7 3 2013-05-03 17:10:01
还有其他记录的对象,但 2 和 3 是重要的(2=登录,3=注销)。
我在查询时遇到问题,该查询将显示总登录小时数。我使用了 this作为起点,但我的查询针对登录的总时间返回 null。
SELECT
el.user_id,
TIME(SUM(el.date_event*(1-2*el.object_id))) AS total_time
FROM
event_log el
WHERE
DATE(el.date_event) = '2013-05-03' AND
el.object_id IN (2,3) AND
el.user_id = 9
GROUP BY
el.user_id;
这产生:
user_id total_time
9 NULL
我期待的地方
user_id total_time
9 05:43:00
为什么返回 NULL?数据集中没有空值。
最佳答案
假设3是注销,2是登录
SELECT T1.user_id,
T1.date_event,
MIN(TimeDiff((T2.date_event), T1.date_event )) AS DaysDiff
FROM YourTable T1
LEFT JOIN YourTable T2
ON T1.user_id = T2.user_id
AND T2.date_event > T1.date_event
WHERE T1.object_id = 2 AND T2.object_id = 3
GROUP BY T1.user_id,
T1.date_event
关于mysql - 计算日期组之间的工作时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16368142/