私は InfluxDB を試しており、次の動作を得ていts
ますselect * from test where time > ts
。
何らかの理由で、これにより、タイムスタンプがより低い行を含むすべての行が返されます。時間制約の構文を誤解していますか?
補足として、分間隔で行を作成し、条件where time > now() -1m
を使用すると、直前に作成された行のみが取得されます。
私は InfluxDB を試しており、次の動作を得ていts
ますselect * from test where time > ts
。
何らかの理由で、これにより、タイムスタンプがより低い行を含むすべての行が返されます。時間制約の構文を誤解していますか?
補足として、分間隔で行を作成し、条件where time > now() -1m
を使用すると、直前に作成された行のみが取得されます。
InfluxDB サイトのクエリ言語のドキュメントから:
時間が非常に大きいことに注意してください。それはマイクロ秒スケールのエポックだからです。InfluxDB は常にこのスケールでポイントを格納しますが、ほとんどのライブラリは秒またはミリ秒のスケール値として時間を返します。特定のポイントを選択している場合は、そのポイントが持つ正確なマイクロ秒スケールのエポックを知る必要があります。そうしないと、予期しない空の結果が得られます。
Influx に付属するデフォルトの Web インターフェイスを使用すると1422883121396
、上記のチュートリアルのようにタイムスタンプを確認できます1400497861762723
。2 番目のタイムスタンプには、実際にはマイクロ秒単位の桁数があります (完全ではありません。6 桁あるはずなのに 3 桁が表示されます)。したがって、time > 1422883121396
非常に古い日付/時刻を照会しているように照会すると、すべての結果が返されます。
ソリューション:
完全なタイムスタンプを返すライブラリを使用しますが、使用したことがないためわかりません
マイクロ秒の精度をあまり気にしない場合は、回避策として、タイムスタンプの最後に 000000 を追加して、正しいスケールに変換できます
この精度を必要とするアプリケーション (シミュレーション ソフトウェアなど) もありますが、ほとんどの場合、#2 の回避策が機能します。
上記があなたの問題を解決することを願っています