MySQL:连续日期之间的累积秒数

时间:2018-07-18 09:53:03

标签: mysql

我正在以各种方式尝试解决此问题。我有一张表格,其中有一列提供ID(不自动递增),另一张表格包含TIMESTAMP数据,如图所示。

Here is the table (table name: t_serie)

我想计算整个表中行中日期与行+1中日期之间的差异(以秒为单位)。

SELECT SUM(TIMESTAMPDIFF(SECOND, t1.time, t2.time)) as total
FROM t_serie AS t1 INNER JOIN t_serie as t2 ON t2.id = t1.id +1

这是我正在使用的查询,但由于id列不是自动增量值,因此无法使用。如何在不使用ALTER TABLE或不使用自动增量ID添加新列的情况下做到这一点?

非常感谢您的回答!

2 个答案:

答案 0 :(得分:0)

您需要使用下一个更大的ID将表的id列连接在一起。 因此,如果要加入比当前ids大的所有id中的至少一个,就应该这样做。

我认为以下查询对您有用。

SELECT SUM(TIMESTAMPDIFF(SECOND, t1.time, t2.time)) as total
FROM t_serie AS t1 
INNER JOIN t_serie as t2 
ON t2.id = (SELECT MIN(id) FROM t_serie t3 where t1.id < t3.id);

答案 1 :(得分:0)

对于每个time,您可以使用子查询来检查序列中的下一个time。然后以秒为单位计算差异。

SELECT 
    time_a,
    time_b,
    TIMESTAMPDIFF(SECOND, time_a, time_b) as difference_in_seconds
FROM (
    SELECT 
        `time` AS time_a,
        (
            SELECT      `time`
            FROM        t_serie b 
            WHERE       b.time > a.time
            ORDER BY    b.time asc
            LIMIT 1
        ) AS time_b
    FROM t_serie a
) tmp