SQL - Как найти разницу между двумя строками одного столбца, содержащего метки времени - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть имя таблицы в качестве теста, содержащее два столбца ниже

name    GMTtime
Test1   2019-02-01 19:54:45.507
Test2   2019-02-15 19:54:55.537
Test3   2019-02-15 19:55:05.560
Test4   2019-02-15 19:55:15.580

Вопрос : я хочу перечислить строки GMTtime, если разница между этими временными метками превышает 15 секунд (например, diffмежду "2019-02-01 19: 54: 45.507" и 2019-02-15 19: 54: 55.537 не более 15 секунд)

Ответы [ 3 ]

0 голосов
/ 16 февраля 2019

В стандартном SQL вы должны использовать lag() и сравнение дат:

select t.*
from (select t.*, lag(t.GMTtime) over (order by t.GMTtime) as prev_GMTtime
      from t
     ) t
where prev_GMTtime < GMTtime - interval '15 second'
0 голосов
/ 16 февраля 2019

Если вы используете MySQL 5.7 или ниже (т. Е. Версию SQL, которая не поддерживает LAG), вы можете получить необходимые результаты, JOIN представив свою таблицу себе, используя условие, что времядля второй таблицы самое позднее время меньше, чем для первой таблицы.Затем вы можете сравнить два раза, используя TIMESTAMPDIFF, чтобы найти те, которые находятся на расстоянии более 15 секунд:

SELECT *
FROM test t1
JOIN test t2 ON t2.GMTtime = (SELECT MAX(GMTtime) 
                              FROM test 
                              WHERE test.GMTtime < t1.GMTtime)
WHERE TIMESTAMPDIFF(SECOND, t2.GMTtime, t1.GMTtime) > 15

Вывод:

name   GMTtime               name   GMTtime
Test2  2019-02-15 19:54:56   Test1  2019-02-01 19:54:46

Демона dbfiddle

0 голосов
/ 16 февраля 2019

использовать функцию: from_unixtime()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...