如何计算时间,发动机和关闭在MySQL
比如我在MySQL 8个DATAS ...如何计算时间,发动机和关闭在MySQL
id car time engine
1 BMW 2012-02-25 04:00:00 off
2 BMW 2012-02-25 04:02:44 on
3 BMW 2012-02-25 04:06:22 off
4 BMW 2012-02-25 04:10:11 off
5 BMW 2012-02-25 04:15:00 on
6 BMW 2012-02-25 04:20:00 on
7 BMW 2012-02-25 04:25:00 off
8 BMW 2012-02-25 04:30:00 off
我要输出的数据是这样的:
汽车发动机关闭:2012- 02-25 04:00:00发车时间:00:02:44
停车发动机:2012-02-25 04:06:22时间:00:03:49
停车发动机:2012-02-25 04 :25:00持续时间:00:05:00
i co nfused如何计算我关闭发动机的时间在我的数据......请帮我解决我的proble ...
SELECT CONCAT('car off engine',A.time,'duration :',SEC_TO_TIME(UNIX_TIMESTAMP(A.time)-UNIX_TIMESTAMP(B.time)))
FROM
(SELECT * FROM data WHERE engine='on' ORDER BY time) A,
(SELECT * FROM data WHERE engine='off' ORDER BY time) B
WHERE A.id+1=B.id;
你是认真的吗? – 2012-03-14 14:17:43
没有..没有..我正在输入这个答案...并由于某种原因离开了我的办公桌..当我回来时,它得到张贴并收到两张倒票... :) – Teja 2012-03-14 14:26:32
那么,什么阻止你从编辑它? – 2012-03-14 14:32:09
如果你想计算的总时间的车被关闭授予“名单关闭“和”打开“时间戳,您需要按升序排列这些时间戳,然后通过计算关闭&之间的时间间隔的总和来计算总关闭时间。
这可以通过使用一些编程语言来遍历offs和ons的有序(按时间)列表来完成。遇到“关闭”时,获取该“关闭”发生和下一个“开启”发生之间的时间。这些时间的总和就是你的总休息时间。或者您可以输出这些迭代时间,然后在每次“关闭”发生后,您就可以看到汽车关闭的时间。
这不是mysql的答案 – 2016-02-24 19:56:27
这会给每行有效的时间 -
SELECT d1.*, SEC_TO_TIME(UNIX_TIMESTAMP(d2.time)-UNIX_TIMESTAMP(d1.time)) AS duration
FROM data d1
INNER JOIN data d2
ON d1.id + 1 = d2.id
ORDER BY d1.id ASC;
借此任何进一步的,我们大约需要设定您所需要的结果的更多细节。
你是否想总结你的引擎时间? – Teja 2012-03-14 14:16:06
你的数据模型不清楚。每行代表引擎状态的_sample_还是特定的转换? – Alnitak 2012-03-14 14:21:34
准确定义你想要计算的时间。另外,你有什么尝试? – 2012-03-14 14:22:19