几个月前,我遇到了一个问题(详情请见calculating total time using timestamp)关于从只有 1 的mysql表中找到持续时间的时间或 0 值表示门的打开或 关闭 状态。表格如下:
1)表t
id binary timestamp
2888 1 2015-05-21 18:01:58
2888 1 2015-05-21 18:01:47
2889 1 2015-05-21 17:58:06
2888 0 2015-05-21 18:01:40
2889 1 2015-05-21 17:57:39
2888 1 2015-05-21 18:01:34
2888 0 2015-05-21 18:01:26
2889 1 2015-05-21 17:58:25
2889 0 2015-05-21 17:57:22
2889 1 2015-05-21 17:58:19
2889 1 2015-05-21 17:57:22
2889 0 2015-05-21 18:03:57
2889 1 2015-05-21 17:58:13
1889 1 2015-05-21 18:03:49
2889 1 2015-05-21 18:03:42
2889 1 2015-05-21 18:03:35
感谢fancyPants
和gRaWEty
帮助我解决这个问题。
好吧,我使用代码计算时间持续时间是:
2)SQL QUERY
select
id, `binary`,
sec_to_time(count(distinct `timestamp`))
from
t
where
`timestamp` between concat(curdate(), ' 00:00:00')
and
concat(curdate(), ' 23:59:59')
group by id, `binary`
所以,我得到的输出是这样的:
3)输出
id binary duration
1889 1 00:00:01
2888 0 00:00:02
2888 1 00:00:03
2889 0 00:00:02
2889 1 00:00:08
(好吧,即使有人忽略了所有文字而只是通过1)-2)-3)希望能得到清晰的图片)
只要我只需要计算持续时间,一切都很好,现在当我被要求显示starting_time(印章)和 ending_time时出现问题邮票)旁边持续时间。因为我打算制作一个需要这样一张桌子的时间表:
4)输出(我正在寻找)
id binary start_time end_time duration
1889 1 2015-05-21 18:03:49 2015-05-21 18:03:49 00:00:01
2889 1 2015-05-21 18:03:35 2015-05-21 18:03:42 00:00:08
我的意思是,如果你看 1)TABLE t ,门1889从2015-05-21 18:03:49
到2015-05-21 18:03:49
开启1秒。门2889从2015-05-21 18:03:35
到2015-05-21 18:03:42
打开了8秒。我的代码只能在输出 3)时生成此持续时间(8秒),但我正在寻找它的开放时间,有两个额外的列,在这种情况下将是2015-05-21 18:03:35
start_time 和2015-05-21 18:03:42
end_time
,输出 4)
现在我的问题:
- 使用 start_time 和 end_time 获取输出的代码(第4行)应该是什么?
- 是否可以将输出保存为表格(例如列名为 id , 二进制 ,< mysql数据库中的strong> start_time , end_time , 持续时间 ) ?
醇>如果是,是否有人可以为此提供链接或示例代码?
感谢先生:)