我有一个带有用户登录数据的MySQL表。
用户| 日期| 类型 ----- + --------------------- + ------ 1 | 2011-01-05 08:00:00 | 登录 1 | 2011-01-06 09:00:00 | 登录 1 | 2011-01-06 10:00:00 | 登出 1 | 2011-01-06 09:50:00 | 登录
给定上表,我想通过添加一个称为工期的新单元格来计算注销日期和上一个登录日期之间的时间差。例如,登出日期为‘2011-01-06 10:00:00; 并且以前的登录日期为“ 2011-01-06 09:50:00”。
结果应该看起来像这样。type = login的行不应具有持续时间值。
用户| 日期| 类型 期间 ----- + --------------------- + -------- + ---------- 1 | 2011-01-05 08:00:00 | 登录| -- 1 | 2011-01-06 09:00:00 | 登录| -- 1 | 2011-01-06 10:00:00 | 登出| 10分钟 1 | 2011-01-06 09:50:00 | 登录| --
预先感谢, mawo
SELECT x.*, TIMEDIFF(x.logout_date, x.login_date) as duration FROM ( SELECT a.user_id, a.`date` as logout_date, (SELECT MAX(b.`date`) FROM table1 b WHERE b.`date` <a.`date` and b.user=a.user and b.type = 'login') as login_date FROM table1 a WHERE a.type ='logout' )x