mysql - MySQL中如何计算当前行与上一行之间的时间差

标签 mysql sql

我有这样的 mysql 表 t1 :

t1 table " temporally created table from previous query

我想要做的是在所有行之间进行计算并将值保存在名为 diff 的新列中

TICKETID| DATENEW  | DIFF
16743     12:36:46   0
16744     12:51:25   15.  minute  
16745     12:57:25   6.5  minute
..........
.......
etc

我知道有类似的问题,但我尝试了所有的解决方案 发布在这里没有成功,那么如何解决这个查询???

最佳答案

要获取当前行和上一行之间的时间差(以分钟为单位),您可以在 datenow 和上一个时间上使用 timestampdiff,您可以通过子查询获取:

select ticketid, datenew,
    timestampdiff(minute,datenew,(select datenew from mytable t2
        where t2.ticketid < t1.ticketid order by t2.ticketid desc limit 1)) as diff
from mytable t1

更新

这是使用变量存储先前的 datenew 值的另一种方法,该方法可能会更快:

select ticketid, datenew, timestampdiff(minute,datenew,prevdatenew)
from (
    select ticketid, datenew, @prevDateNew as prevdatenew, 
      @prevDateNew := datenew
    from mytable order by ticketid
) t1

关于mysql - MySQL中如何计算当前行与上一行之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040867/

相关文章:

mysql - SQL:多对多对多对多...这有效吗?

php - 如何使用触发器在SQL中递增?

SQL - 选择比较同一查询的多行的列

php - 更改二维数组以实现 Codeigniter 兼容性批量插入

php - 如何在 WHERE 子句中使用数组值?

mysql - Entity Framework -> MySql 给出 'Function evaluation timed out.'

sql - 审核 SQL Server 数据更改

php - 对sql中的查询结果进行分组

sql - 在 SSMS 中哪里可以检查 SQL Server 2008 中的用户定义表类型?以及如何在其中插入新列?

mysql - 如果 MySQL 中存在列,则删除行