DOWN和UP事件之间MYSQL的时间戳差异,但UP和DOWN事件之间没有

时间:2015-05-20 12:09:35

标签: mysql sql mysql-workbench

我有MYSQL数据库,我想编写一个查询,它会在DOWN和UP事件之间以秒为单位返回时差。我只需要DOWN和UP事件之间的区别,但不是UP和DOWN事件之间的区别。

以下是我的数据库记录示例:

comment       date_time       type
  146   2015-05-20 07:07:34    UP
  146   2015-05-20 07:02:32   DOWN
  146   2015-05-20 00:03:13    UP
  146   2015-05-19 23:57:36   DOWN

因为我只需要在DOWN和UP事件之间有所区别,2015-05-20 00:00:002015-05-20 12:00:00之间的区别应为00:05:02

我有一个MYSQL查询:

SELECT UP1.comment, sum(timestampdiff(second, DOWN1.date_time, UP1.date_time)) AS down_time_d FROM
(SELECT comment, date_time, type FROM event
    WHERE  comment like '%146%'
    AND event.date_time BETWEEN '2015-05-20 00:00.00' and '2015-05-20 13:23:58'
    AND type = 'SENSOR_UP'
) AS UP1,

(SELECT comment, date_time, type FROM event
    WHERE  comment like '%146%'
    AND event.date_time BETWEEN '2015-05-20 00:00.00' and '2015-05-20 13:23:58'
    AND type = 'SENSOR_DOWN'
) AS DOWN1
WHERE UP1.comment=DOWN1.comment
GROUP BY comment

此查询的问题是返回DOWN UP和UP和DOWN之间的区别。返回,我的差异是06:54:17而不是我的期望00:05:02。如果有更多的DOWN和UP记录,它会在DOWN和UP之间的所有可能组合之间产生差异。

在我的查询中我应该更改哪些内容只返回DOWN和UP事件之间的时差差值?

Thanx寻求帮助

1 个答案:

答案 0 :(得分:0)

我要解释你要求的东西......
- 系统停机的总时间

系统从ë事件发生之时开始一直停止,直到任何后续事件。

如果后续事件也是DOWN,则只会继续保持原状。

如果没有后续事件,系统将一直保持到“现在”。

DOWN