在MySQL中查找具有特定日期时间差的记录
我有一个审计跟踪表,在那里我存储了记录以及每个事务所花费的时间 例: 日期时间引用ID状态在MySQL中查找具有特定日期时间差的记录,mysql,Mysql,我有一个审计跟踪表,在那里我存储了记录以及每个事务所花费的时间 例: 日期时间引用ID状态 2012-08-29 18:54:22美国广播公司 2012-08-29 18:54:28 abc成功 2012-08-29 18:54:32 abcd 2012-08-29 18:54:48成功 我想找出所有超过10秒的记录 我的输出应该是 引用ID所用时间 abcd 16 谢谢 Soni您可以在表上对状态为空的记录与相应的成功记录进行自联接,并计算它们之间的差异。此查询假设每个ReferenceID只
2012-08-29 18:54:22美国广播公司 2012-08-29 18:54:28 abc成功
2012-08-29 18:54:32 abcd
2012-08-29 18:54:48成功 我想找出所有超过10秒的记录 我的输出应该是
引用ID所用时间
abcd 16 谢谢
Soni您可以在表上对状态为空的记录与相应的成功记录进行自联接,并计算它们之间的差异。此查询假设每个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
您可以在表上对状态为空的记录与相应的成功记录进行自联接,并计算它们之间的差异。此查询假设每个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
我认为您至少需要两个datetime字段来完成此操作。想分享你的完整表格结构吗?嗨,迈克,这个例子展示了我们如何存储数据。基本上,我在事务开始时插入一条记录,并在事务处理后插入另一条记录。表中没有其他datetime字段。不幸的是,我无法共享完整的表结构。我想您至少需要两个datetime字段。想分享你的完整表格结构吗?嗨,迈克,这个例子展示了我们如何存储数据。基本上,我在事务开始时插入一条记录,并在事务处理后插入另一条记录。表中没有其他datetime字段。不幸的是,我无法共享完整的表结构。您编写了“自联接”,但正在执行“左联接”。这似乎不正确。它们不是互斥的,“自连接”只是表示您要连接回原始表。可以是内部联接、左外联接等。我刚刚检查(删除了一行数据),使用左联接工作正常,因为您的
WHERE
条件排除了d2.Dttm为null的行。您编写了“自联接”,但正在执行“左联接”。这似乎不正确。它们不是互斥的,“自连接”只是表示您要连接回原始表。可以是内部联接、左外联接等。我刚刚检查了(删除了一行数据),使用左联接可以正常工作,因为您的WHERE
条件排除了d2.Dttm为null的行。