我试图确定一天中某个特定事件发生的平均时间。对于大多数事件,我可以使用以下查询来完成此操作:SEC_TO_TIME( round( avg( TIME_TO_SEC( TIME(MY_EVENT_TIME) ) ) ),0 )
当时间范围跨越午夜时,这种逻辑就失效了。
给定以下数据集,21:37:37 22:00:29 23:01:13 23:09:41 23:56:37 00:02:43 00:15:31 01:19:52 02:55:59 04:27:56
我预计平均时间在00:00:00左右。
取UNIX_TIMESTAMP的平均值没有什么帮助,因为它考虑了日期。
有没有一个纯粹的MySQL方法来解决这个问题?
1条答案
按热度按时间kwvwclae1#
你的问题是,没有日期,所有的事件都发生在同一天,因此你最终得到的平均值是中午,而不是午夜。
向数据中添加日期可获得正确的结果。
avg_event = 00:16:45.8000
虽然这解释了为什么你看到的数据集是中午的结果,但正如评论中提到的,它并没有解决你的问题。时间是连续的,所以你必须决定如何划分它,以及该时间段的“中心”在哪里,以便计算平均值。