查找具有MySQL特定日期时间差异的记录

时间:2012-08-29 21:57:06

标签: mysql

我有一个审计跟踪表,我在其中存储记录,并记录每笔交易的时间

例: DateTime ReferenceID状态
2012-08-29 18:54:22 abc
2012-08-29 18:54:28 abc成功
2012-08-29 18:54:32 abcd
2012-08-29 18:54:48 abcd成功

我想找出超过10秒的所有记录。

我的输出应该看起来像 ReferenceID TimeTaken
abcd 16

由于 超声处理

1 个答案:

答案 0 :(得分:1)

您可以在表格上从具有空白状态的记录到相应的成功记录进行自联接,并计算它们之间的差异。此查询假设您只有每个ReferenceID的两条记录,如果可能有更多,您将不得不进行进一步过滤。

select d1.ReferenceID,
  TimeStampDiff(SECOND, d1.Dttm, d2.Dttm) TimeTaken
from data d1
left join data d2 on d2.ReferenceID = d1.ReferenceID
  and d2.Status = 'Success'
where d1.Status = ''
  and TimeStampDiff(SECOND, d1.Dttm, d2.Dttm) > 10

SQL Fiddle