Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中查找具有特定日期时间差的记录_Mysql - Fatal编程技术网

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

在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只

我有一个审计跟踪表,在那里我存储了记录以及每个事务所花费的时间

例: 日期时间引用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只有两条记录,如果可能有更多记录,则必须进行进一步筛选

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的行。