我试图在两个事件之间获得数据库中的时间差。在数据库中,users表具有不同的列,但我正在使用status列。如果用户在我们的网站上下订单,状态栏会显示"待定"并且,如果它由我们的代理确认,则转到"成功"。我试图获得显示待处理时间和显示成功时之间的时差(以秒为单位)。
注意:如果有人能用PHP解释PHP中的time()函数,我会很高兴。
答案 0 :(得分:0)
您可以使用MySQL的unix_timestamp()
功能。假设您的表有两个事件的两个记录,并且有一个名为eventTime
的列,那么下面的两个查询可以为您提供两个值,这两个值是自Epoch以来的相应秒数。你可以用前者减去后者并获得时差
select unix_timestamp(eventTime) ... where status='pending'
select unix_timestamp(eventTime) ... where status='success'
<强>更新强>
在重新阅读您的问题后,我猜您的数据库设计是在事务的整个生命周期中只有一行(从pending
到success
)。在这种情况下,如果所有三方(将状态更新为pending
的代理,将状态更新为success
的代理,以及需要查找两个事件之间的时差的代理)涉及的是相同的线程,然后您可以将两个事件时间保留在内存中并简单地计算差异。
但是,我认为三方更有可能是两个或三个不同的主题。在这种情况下,我认为你必须有一些机制将知识(第一个事件时间)从一个线程传递到另一个线程。这可以通过添加名为lastUpdateTime
的新列,或添加新表以进行时间跟踪来完成。
顺便说一下,如果你使用第二种方法,我认为MySQL Trigger可能对你有用(这样每当表更新时,它会触发另一个命令来更新第二个表,它只用于保存追踪经过时间的事件时间)。此方法允许您不更改原始表,而只是添加新表。