我有一个表名作为测试,包含两个以下的列
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秒)
答案 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