我正在尝试使用 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
!第二个时间戳有更多的数字,实际上是微秒刻度(不完整,显示 3 而应该有 6)。因此,像查询一样time > 1422883121396
查询非常旧的日期/时间,因此会返回所有结果。
解决方案:
使用返回完整时间戳的库,但是,我从未使用过,所以我不知道
如果您并不真正关心微秒精度并且作为一种解决方法,您可以在时间戳末尾添加 000000 以将其转换为正确的刻度
有一些应用程序可能需要这种精度(例如模拟软件),但在大多数情况下,#2 解决方法应该可以工作。
希望以上能解决你的问题