2016-12-15 7 views
-1

開始時間と終了時間の間に2分ごとにSQL Liteテーブルからデータを取得するのに助けてくれる人 データ、タイムスタンプが2つあり、2つのタイムスタンプそれはうまくいきますが、私がしようとしているのは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 ....2分ごとにデータを取得する

+0

あなたの質問は広く、不明です。あなたの問題が何であるかをもう少し説明してください。 –

+0

https://stackoverflow.com/help/how-to-ask –

+0

私のSQL Liteテーブルのデータは2つごとに必要です分inetrval –

答えて

2

where句、2分の境界を探す式:

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

これは、正確な2分境界にデータがあることを前提としています。これらのポイント間のデータは無視されます。

strftime("%s", TimeStamp)は、1970年1月1日からの秒数を表す単一の数値にタイムスタンプ文字列を変換します。% 120は、120秒ごとに0になるモジュロ演算を行います。

: - と私はこれを使用しました - 境界の間のすべてのデータを取得し、それらを一緒に平均化することであるあなたが分の境界をしたい場合は、時間単位の場合は、何より興味深いのは3600

を使用し、60を使用します

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分間の「ビン」内のタイムスタンプを持つすべてのデータの平均です。 2番目の日付の比較は、<=ではなく<であり、最後のビンは1つのサンプルのみを平均し、他のビンは複数の値の平均となるためです。各ビン内のデータの変更量を知りたい場合は、MAX(Data)MIN(Data)の列を追加することもできます。

+0

3分、5分のような奇数分の場合、結果の正しい結果ではない –

+0

これは、奇数分の境界にシフトするように調整する必要があります: 'CAST(strftime("%s "、TimeStamp)/ 120 - 60 AS INTEGER)* 120 + 60' – RichN

+0

毎分が必要な場合は、私の答えで '120'を' 60'に置き換えてください。 – RichN

関連する問題