代码之家  ›  专栏  ›  技术社区  ›  ChatterOne

SQLite中没有ID的两个独立行之间的日期差

  •  0
  • ChatterOne  · 技术社区  · 6 年前

    1536074432|startRecording
    1536074434|stopRecording
    1536074443|startRecording
    1536074447|stopRecording
    1536074458|startRecording
    1536074462|stopRecording
    

    我想得到两个连续的不同事件之间经过的秒数(基本上是我录制的视频的秒数)。

    我知道另一个类似的问题( Date Difference between consecutive rows ),但在我的例子中,它是不同的,因为我无法通过ID获取“next”行,但我必须基于不同的事件名称来获取它。

    有一个答案很神奇,但它是特定于SQL Server的( Query to find the time difference between successive events ),我需要这个给SQLite。

    我可以用甲骨文和 LAG / LEAD 函数,但不知道如何在SQLite中实现。

    1 回复  |  直到 6 年前
        1
  •  4
  •   DinoCoderSaurus    6 年前

    即使没有 id 在表中,sqlite存储一个rowid( from sqlite CREATE_TABLE doc ):

    ROWIDs和整数主键
    除了没有ROWID表之外,SQLite表中的所有行都有一个64位有符号整数键,唯一地标识其表中的行。这个整数通常称为“rowid”。可以使用一个与大小写无关的特殊名称“rowid”、“oid”或“id”访问rowid值 “代替列名。如果表包含名为“rowid”、“oid”或“id”的用户定义列 行ID

    假设完全干净的数据如下所述:)那么:

    select a.rowid,a.time,a.event,b.rowid,b.time,b.event,b.time - a.time as elapsed --,sum(b.time-a.time)
    from t2 a, t2 b
    where a.rowid % 2 = 1
    and b.rowid = a.rowid + 1
    
    推荐文章