【发布时间】:2010-02-10 15:16:39
【问题描述】:
我在表格中有一系列带时间戳的开/关数据,代表开/关状态,或状态“开始”的点
00:00:00 0
04:00:00 1
08:00:00 0
09:00:00 1
15:00:00 0
20:00:00 1
23:59:59 0
我需要计算(比如说)开启状态在 24 小时内的总持续时间。
在这个简化的示例中,总持续时间 = 1 是 (04:00:00->08:00:00, 09:00:00->15:00:00, 20:00:00->23:59:59 即 13:59:59 大约 14 小时
我无法确定这是否可以单独在 SQL 中完成,或者我正在使用的底层框架 (django) 是否需要根据返回的数据来执行此操作。如果可能的话,我显然更愿意让数据库来完成繁重的工作,因为我们可能还需要在单独的 stats 包中使用 SQL。
我不清楚我是否可以对选择中的上一个或下一个元素进行操作,我是一个自信的 SQL 用户,但看不到从哪里开始这个或通用方法,有什么想法吗?
我真的很想在单个查询中使用这个,或者我缺少一些其他巧妙的计算方式!
【问题讨论】:
-
首先,我会设计表格,使 ON 和 OFF 状态时间在不同列的同一行上,那么这个任务将是微不足道的。如果这对您来说是不可能的,那么您需要进行大量的黑客攻击才能完成它:)
标签: mysql datetime math datediff temporal