每2分钟获取数据SQL Lite

时间:2016-12-15 11:48:53

标签: sqlite

请允许任何人帮助我在开始时间和停止时间之间每2分钟从我的SQL Lite表中获取数据 我有两列Data,TimeStamp和我在两个时间戳之间过滤它工作正常但我想要做的是每2分钟间隔产生我的数据例如我的开始时间是2016-12-15 10:00 :00和停止时间是2016-12-15 10:10:00结果应该是2016-12-15 10:00:00,2016-12-15 10:02:00,2016-12-15 10:04 :00 ....

1 个答案:

答案 0 :(得分:2)

where子句中添加一个查找2分钟边界的表达式:

strftime("%s", TimeStamp) % 120 = 0

这假设您有关于精确的2分钟边界的数据。它将忽略这些点之间的数据。

strftime("%s", TimeStamp)将您的时间戳字符串转换为单个数字,表示自1970年1月1日以来的秒数。% 120进行模运算,每120秒产生一次0。如果您想要分钟边界,请使用60.如果您需要每小时,请使用3600。

更有趣的是 - 我已经使用了这个 - 是在边界之间获取所有数据并将它们平均化:

SELECT CAST(strftime("%s", TimeStamp) / 120 AS INTEGER) * 120 as stamp, AVG(Data)
    FROM table
    WHERE TimeStamp >= '2016-12-15 10:00:00' AND
          TimeStamp < '2016-12-15 10:10:00'
    GROUP BY stamp;

这会在同一个2分钟的#bin;#34;中平均所有带时间戳的数据。第二个日期比较是<而不是<=,因为最后一个bin只会平均一个样本,而其他二进制文件将是多个值的平均值。如果您想知道每个bin中数据的变化程度,您还可以添加MAX(Data)MIN(Data)列。