Это показывает, как вы можете выполнить sh, что в mysql 5.x и выше
Пожалуйста, прочтите текст в конце для получения дополнительной информации
CREATE TABLE IF NOT EXISTS `sessions` (
id_user int,
`start_date` datetime
);
insert into `sessions` values (1,'2020-02-21 08:24:07');
insert into `sessions` values (1,'2020-02-21 08:24:08');
insert into `sessions` values (1,'2020-02-21 15:08:20');
insert into `sessions` values (1,'2020-02-21 15:08:21');
insert into `sessions` values (1,'2020-02-21 15:08:22');
insert into `sessions` values (2,'2020-02-20 15:08:22');
insert into `sessions` values (2,'2020-02-20 15:15:22');
insert into `sessions` values (3,'2020-02-20 15:08:22');
insert into `sessions` values (3,'2020-02-20 15:15:22');
insert into `sessions` values (3,'2020-02-20 15:20:22');
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
SELECT
IF(@iduser = id_user,TIME_FORMAT(TIMEDIFF(`start_date`,@date), '%H:%i:%S'), NULL) Datediff
,@iduser := id_user iduser
, @date := `start_date` `start_date`
FROM
(SELECT * FROM sessions ORDER by id_user ASC, start_date ASC) t
,(SELECT @iduser := 0) a,(SELECT @date := 0) b;
Datediff | iduser | start_date
:------- | -----: | :------------------
<em>null</em> | 1 | 2020-02-21 08:24:07
00:00:01 | 1 | 2020-02-21 08:24:08
06:44:12 | 1 | 2020-02-21 15:08:20
00:00:01 | 1 | 2020-02-21 15:08:21
00:00:01 | 1 | 2020-02-21 15:08:22
<em>null</em> | 2 | 2020-02-20 15:08:22
00:07:00 | 2 | 2020-02-20 15:15:22
<em>null</em> | 3 | 2020-02-20 15:08:22
00:07:00 | 3 | 2020-02-20 15:15:22
00:05:00 | 3 | 2020-02-20 15:20:22
дБ <> скрипка здесь
Используется TIMEDIFF чтобы получить разницу между строками.
И использует TIME_FORMAT , чтобы избавиться от миллисекунд.
Новый столбец Datediff находится в начало и должны оставаться там , чтобы алгоритм мог работать . Если вы хотите изменить порядок в mysql, вам нужен новый внешний запрос SELECT.
Последняя проблема этого алгоритма состоит в том, что он просто делает время1 - время2, он не все равно, если начнется новый день, он все равно сделает это для каждого id_user. Можно использовать гораздо более сложные предложения ORDER BY.