MySQL timestampdiff在同一列上的记录

时间:2018-03-21 11:57:09

标签: mysql sql timestamp timestampdiff

我有一张桌子,我试图在同一列上加时间。我有一个列,我记录任何事件的所有时间条目。所以,我想按网关ID对它们进行分组,并以小时,分钟和秒为单位。我曾尝试使用timestampdiff,但它需要三个参数,因为我只有一行,所以我找不到方法。那可能吗?我的表看起来像这样:

    +----+---------+---------------------+
    | id | gateway |      timestamp      |
    +----+---------+---------------------+
    |  1 |       1 | 2018-03-21 08:52:51 |
    |  2 |       1 | 2018-03-21 08:52:54 |
    |  3 |       1 | 2018-03-21 08:52:58 |
    |  4 |       1 | 2018-03-21 08:53:11 |
    |  5 |       2 | 2018-03-21 08:53:51 |
    |  6 |       1 | 2018-03-21 08:54:21 |
    |  7 |       2 | 2018-03-21 08:54:32 |
    |  8 |       2 | 2018-03-21 08:54:44 |
    |  9 |       2 | 2018-03-21 08:54:53 |
    | 10 |       2 | 2018-03-21 08:55:01 |
    +----+---------+---------------------+

基本上我想通过他们的网关对所有记录进行分组,然后在那里有时间总和。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我想你想要:

select gateway,
       timestampdiff(seconds, min(timestamp), max(timestamp))
from t
group by gateway;

我对你的问题感到有些困惑,因为timestampdiff()有三个参数,而不是两个。