Разница во времени SQL в одной таблице - PullRequest
2 голосов
/ 24 сентября 2011


У меня есть одна таблица MySQL с данными для входа пользователей.

user |  date               | type
-----+---------------------+------
1    | 2011-01-05 08:00:00 | login
1    | 2011-01-06 09:00:00 | login
1    | 2011-01-06 10:00:00 | logout
1    | 2011-01-06 09:50:00 | login

Учитывая приведенную выше таблицу, я хотел бы рассчитать разницу во времени между датой выхода из системы и предыдущей регистрациейдата, добавив новую ячейку под названием длительность.Например, дата выхода из системы была 2011-01-06 10:00:00;и предыдущей датой входа будет «2011-01-06 09:50:00».

Результат должен выглядеть примерно так.Строки с типом = логин не должны иметь значения продолжительности.

user |  date               | type   | duration
-----+---------------------+--------+----------
1    | 2011-01-05 08:00:00 | login  | -
1    | 2011-01-06 09:00:00 | login  | -
1    | 2011-01-06 10:00:00 | logout | 10min
1    | 2011-01-06 09:50:00 | login  | -

Заранее спасибо,
mawo

1 Ответ

3 голосов
/ 24 сентября 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...