【发布时间】:2015-07-05 22:30:21
【问题描述】:
我想以间隔(10 或 15 分钟)过滤两个日期时间值之间的数据
假设如果我想要 '2014-10-14 00:00:00' 和 '2014-10-15 01:00:00' 之间的数据,间隔 15 分钟,那么我的输出将返回
2014-10-09 01:00:00 6624.067
2014-10-09 01:15:00 6623.666
2014-10-09 01:30:00 6626.044
2014-10-09 01:45:00 6624.261
2014-10-09 02:00:00 6622.448
2014-10-09 02:15:00 6616.236
2014-10-09 03:50:00 6607.514
2014-10-09 04:00:00 6614.486
表结构为:
LogDate LogTime machine_val machine_id 2014-10-09 01:00:00 6624.067 1 2014-10-09 01:05:00 6623.666 1 2014-10-09 01:10:00 6626.044 1 2014-10-09 01:00:00 6624.261 43 2014-10-09 02:00:00 6622.448 7 2014-10-09 02:00:00 6616.236 5 2014-10-09 03:50:00 6607.514 1 2014-10-09 04:00:00 6614.486 2我尝试对值进行分组
按日期(logdate)、小时(logtime)、分钟(logtime) div 15 分组;
与
concat(LogDate,' ',LogTime) >= DATE_SUB('2014-10-09 01:00:00', INTERVAL 30 MINUTE) AND concat(LogDate,' ',LogTime)
但它没有返回正确的间隔值,如 10 分钟、25 分钟...等。
任何建议
【问题讨论】:
-
请发布您的表格结构以及您希望对数据进行何种汇总。还向我们展示您尝试了哪些查询。
-
您可以尝试转换为 UNIX 时间,然后尝试
x div 600而不是x div 10 -
您可以制作一个您感兴趣的区间的参考表并交叉加入它。我知道可能有一些特定于 MySQL 的解决方案是劳动密集型的,但我之前在 SQL Server 中使用过这种方法,效果很好。
-
看这里:stackoverflow.com/questions/29714350/…,虽然我真的不明白你的来源如何给你想要的回应。 @bf2020 没有 mysql easymode 方法 - 您要么创建间隔表,要么在其中塞入一个凌乱的联合子查询。
-
@pala_ - +1 - 这是一个很酷的解决方案,感谢您推荐我。下次我肯定会使用这种方法...