【发布时间】:2010-12-21 17:31:45
【问题描述】:
上周开发人员退出时,我最近的任务是完成一个 PHP/MySQL Web 应用程序。我不是 MySQL 专家,所以如果这是一个非常简单的问题,我深表歉意。我已经搜索了两天的大部分时间,试图找到一个相对简单的解决方案来解决我的问题,如下所示。
问题简述:
我有一个 MySQL 表,其中包含开始和结束日期时间 (GMT -5) 和 UNIX 时间戳值,涵盖不规则长度的持续时间,需要将它们分解/拆分/划分为更规则的时间块(5 分钟)。我不是在计算每个时间块/桶/周期的行条目数,如果这有任何意义的话。
数据示例:
started, ended, started_UNIX, ended_UNIX
2010-10-25 15:12:33, 2010-10-25 15:47:09, 1288033953, 1288036029
我希望得到什么:
2010-10-25 15:12:33, 2010-10-25 15:15:00, 1288033953, 1288037700
2010-10-25 15:15:00, 2010-10-25 15:20:00, 1288037700, 1288038000
2010-10-25 15:20:00, 2010-10-25 15:25:00, 1288038000, 1288038300
2010-10-25 15:25:00, 2010-10-25 15:30:00, 1288038300, 1288038600
2010-10-25 15:30:00, 2010-10-25 15:35:00, 1288038600, 1288038900
2010-10-25 15:35:00, 2010-10-25 15:40:00, 1288038900, 1288039200
2010-10-25 15:40:00, 2010-10-25 15:45:00, 1288039200, 1288039500
2010-10-25 15:45:00, 2010-10-25 15:47:09, 1288039500, 1288039629
如果您有兴趣,这里是应用程序的快速和肮脏以及我需要数据的原因:
应用程序概述:应用程序在其输入引脚接地时接收由基本传感器设备生成的非常简单的 POST 请求,该请求向 MySQL 记录时间戳(如启动时)的数据库提交 INSERT 查询。当输入引脚从接地状态返回时,设备会提交不同的 POST 请求,这会导致 PHP 应用程序提交 UPDATE 查询,其中会插入修改时间时间戳(结束时)。
我的雇主最近将定期报告的计量单位从每天“开启”秒m>更改为每 5 分钟间隔“开启”秒m>。我已经制定了我认为可行的解决方案,但是当我在纸上查看它时,它看起来就像是在 MySQL 中构建的 Rube Goldberg 的噩梦,所以它被淘汰了。
关于如何将这些跨度分成 5 分钟的块有什么建议吗?将其全部保存在 MySQL 中是我的偏好,尽管我会接受任何 建议。感谢您提出的任何建议。
再次,如果这是一个简单的问题,我深表歉意。
如果我以后再问关于 SO 集体意识的任何其他问题,我会尽量用词更好一些。任何帮助都将受到欢迎。
谢谢,
尼人
【问题讨论】:
-
这没有意义。如果您试图计算每 5 分钟的秒数,那么您列出的所需数据对实现该目标并没有多大帮助。如果它停留在两个时期会发生什么......从 10:04 开始并在 10:06 结束?你不能只在 mysql 中做到这一点。