如何解决MySQL查询如何减去不同行但同一列中多个条件的日期时间
我的下表如下,并且在继续计算警报3的触发时间和开始触发的持续时间之前,我必须按相同的日期和相同的位置进行过滤,条件是警报3始终跟随警报6。警报3和警报6的开始时间之间的间隔不得超过其开始时间的最大值60s。
site | alarm | start | end
-----| ------| --------------------| -------------------
A | 3 | 2020-01-03 22:25:16 | 2020-01-03 22:25:46
A | 6 | 2020-01-03 22:25:26 | 2020-01-03 22:35:26
A | 5 | 2020-01-03 10:25:16 | 2020-01-03 10:26:26
A | 3 | 2020-01-03 12:25:16 | 2020-01-03 12:26:26
B | 3 | 2020-01-04 22:22:16 | 2020-01-04 22:22:59
B | 6 | 2020-01-04 22:22:40 | 2020-01-04 22:25:26
我希望得到如下的结果表,
site | alarm | start | end | duration(seconds)
-----| ------| --------------------| --------------------| --------
A | 3 | 2020-01-03 22:25:16 | 2020-01-03 22:25:46 | 30
A | 6 | 2020-01-03 22:25:26 | 2020-01-03 22:35:26 |
B | 3 | 2020-01-04 22:22:16 | 2020-01-04 22:22:59 | 43
B | 6 | 2020-01-04 22:22:40 | 2020-01-04 22:25:26 |
解决方法
尝试一下。这可能会解决问题:)
SELECT * FROM MyTab T WHERE TIMESTAMPDIFF(MINUTE,open_date,close_date) > 1
,
尝试一下。用表名替换警报
SELECT
site,alarm,start,end,CASE
WHEN TIMESTAMPDIFF(SECOND,START,END) <= 60 THEN TIMESTAMPDIFF(SECOND,END)
ELSE NULL
END AS duration
FROM
Alarms
WHERE
alarm IN (3,6)
ORDER BY site,alarm;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。