2017-11-19 4 views
1

私は現在、Android AppがSQLiteデータベースにタイムスタンプを持ついくつかの値を保存しているプロジェクトに取り組んでいます。タイムスタンプは、 "yyyy-MM-dd HH:mm:ss"の形式で "DATE NOT NULL"タイプとして格納されます。 (例:ID:1 |タイムスタンプ:2017-11-19 21:05:04 |値:1234)最後の60分のすべての値を集計します。

ここで、いくつかの計算では、現在の時刻から最後の60分に作成/格納されたエントリの数を選択する必要があります。

だから私のようなものが必要です:あなたは私を助けることができる

SELECT Count(*) FROM TableName WHERE Timestamp > current_timestamp - 60 Minutes 

を? 1つの問題は、タイムスタンプが保存される方法を変更できないことです。

類似しているように見える多くのトピックを検索しましたが、動作させることはできません。

読んで助けてくれてありがとう。 cold1ce

答えて

1

保存されたタイムスタンプは、sqlite処理では正当だと思われます。

日付の計算に使用するときは、datetime()を適用してみてください。

あなたの質問がに関しては、あなたは、このように約それをしなければならない。

WHERE datetime(timestamp) > datetime(current_timestamp, '-60 minutes') 
+0

何らかの方法で動作しているようです。私は頑強さをテストし、フィードバックを与えます。ありがとうgnudiff! – cold1ce

+0

これはとてもうまく動作します。唯一のことは、現在のタイムスタンプがタイムシフトのために1時間間違っていることです。しかし、別の60分を引いてそれを修正しました。ご協力ありがとうございました! – cold1ce

+0

@ cold1ce問題ありません。時間に関しては、sqliteはいつでもGMTで時刻を格納し、予想します。あなたのテーブルの値があなたのローカルTZで(よくあるように)あれば、datetime(タイムスタンプ、 '-60分'、 'localtime')を試すこともできます – Gnudiff

関連する問題