1

我正在尝试使用 InfluxDB,并获得以下行为:在创建了几行具有任意内容的行之后,我选择ts了中间行的时间值并查询:select * from test where time > ts.

由于某种原因,这会返回所有行,包括时间戳较低的行。我是否误解了时间限制的语法?

作为旁注,如果我以分钟为间隔创建行,并使用条件,where time > now() -1m我只会得到最后一分钟创建的行。

4

1 回答 1

3

来自 InfluxDB 站点查询语言文档:

请注意,时间是一个非常大的数字。那是因为它是一个微秒级的时代。InfluxDB 总是以这种比例存储点,但大多数库会以秒或毫秒的比例值返回时间。如果您选择一个特定的点,您需要知道该点所具有的精确微秒级纪元,否则您会得到一个意想不到的空结果。

现在,使用 Influx 附带的默认 Web 界面,您可以看到时间戳,就像1422883121396在上面的教程中您可以看到的一样1400497861762723!第二个时间戳有更多的数字,实际上是微秒刻度(不完整,显示 3 而应该有 6)。因此,像查询一样time > 1422883121396查询非常旧的日期/时间,因此会返回所有结果。

解决方案:

  1. 使用返回完整时间戳的库,但是,我从未使用过,所以我不知道

  2. 如果您并不真正关心微秒精度并且作为一种解决方法,您可以在时间戳末尾添加 000000 以将其转换为正确的刻度

有一些应用程序可能需要这种精度(例如模拟软件),但在大多数情况下,#2 解决方法应该可以工作。

希望以上能解决你的问题

于 2015-02-18T11:30:59.407 回答