SQL-如何查找包含时间戳的同一列的两行之间的差异

时间:2019-02-16 01:06:07

标签: mysql sql

我有一个表名作为测试,包含两个以下的列

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

问题:如果这些时间戳之间的时间差超过15秒(例如,“ 2019-02-01 19:54:45.507”与2019-02-15之间的时差),我想列出GMTtime行19:54:55.537不超过15秒)

3 个答案:

答案 0 :(得分:1)

在标准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'

答案 1 :(得分:0)

使用功能:from_unixtime()

答案 2 :(得分:0)

如果您运行的是MySQL 5.7或更低版​​本(即,不支持LAG的SQL版本),则可以通过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

Demo on dbfiddle