请允许任何人帮助我在开始时间和停止时间之间每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 ....
答案 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)
列。