#mysql
#mysql
Вопрос:
У меня есть таблица со столбцом StartDate, я хочу вычислить разницу во времени между двумя последовательными записями.
Спасибо.
@ Mark Byers и @ Yahia, у меня есть таблица запросов в качестве идентификатора запроса, дата начала
requestId startdate
1 2011-10-16 13:15:56
2 2011-10-16 13:15:59
3 2011-10-16 13:15:59
4 2011-10-16 13:16:02
5 2011-10-16 13:18:07
и я хочу знать, какова разница во времени между запросами 1 amp; 2, 2 amp; 3, 3 amp; 4 и так далее. я знаю, что мне понадобится самосоединение к таблице, но я не правильно понимаю предложение on.
Комментарии:
1. Последовательный в соответствии с каким полем? Можете ли вы привести пример того, что вы хотите?
Ответ №1:
Чтобы добиться того, о чем вы просите, попробуйте выполнить следующее (ОБНОВИТЬ после редактирования из OP):
SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid 1)
ORDER BY A.requestid ASC
ЕСЛИ requestid
не является последовательным, вы можете использовать
SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN (C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC
Комментарии:
1. Вторая цель может быть написана с
starttime
помощью вместоrequestid
!!
Ответ №2:
Принятый ответ правильный, но дает разницу в числах. В качестве примера, если у меня есть следующие 2 временные метки:
2014-06-09 09:48:15
2014-06-09 09:50:11
Разница задается как 196. Это просто 5011 — 4815.
Чтобы получить разницу во времени, вы можете изменить сценарий следующим образом:
SELECT A.requestid, A.starttime, TIMESTAMPDIFF(MINUTE,A.starttime,B.starttime) AS timedifference
FROM MyTable A INNER JOIN MyTable B ON B.requestid = (A.requestid 1)
ORDER BY A.requestid ASC
Ответ №3:
SELECT TIMESTAMPDIFF(SECOND, grd.startdate, grd1.startdate) as TD FROM myTable A
inner join myTable B on A.requestId = B.requestId - 1 and
A.startdate >= '2019-07-01' order by TD desc