我有一张桌子,我试图在同一列上加时间。我有一个列,我记录任何事件的所有时间条目。所以,我想按网关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 |
+----+---------+---------------------+
基本上我想通过他们的网关对所有记录进行分组,然后在那里有时间总和。
提前致谢!
答案 0 :(得分:1)
我想你想要:
select gateway,
timestampdiff(seconds, min(timestamp), max(timestamp))
from t
group by gateway;
我对你的问题感到有些困惑,因为timestampdiff()
有三个参数,而不是两个。