要获取 InfluxDB 2.0 中的瞬时值,您可以使用 last() 函数和 time() 函数结合起来。
last() 函数用于返回最新一条数据的指定字段值。例如,如果您想获取当前时间下某个传感器的温度值,您可以使用以下查询:
from(bucket: "my-bucket")
|> range(start: -1m)
|> filter(fn: (r) => r._measurement == "temperature" and r.sensor_id == "123")
|> last(column: "_value")
在上面的示例中,我们使用 range() 函数获取过去一分钟内所有的温度记录,并通过 filter() 函数过滤出符合条件(测量类型为“temperature”且传感器 ID 为“123”)的记录。然后我们使用 last() 函数返回最新一条记录中 _value 字段的值。
如果你想获取特定时间点下某个传感器的温度值,你需要将查询语句修改为:
from(bucket: "my-bucket")
|> range(start: -1h, stop: time(v: "2022-01-01T12:00:00Z"))
|> filter(fn: (r) => r._measurement == "temperature" and r.sensor_id == "123")
|> last(column: "_value")
在上面的示例中,我们使用 range() 函数指定了一个特定时间点作为结束时间,并通过 time() 函数设置了该时间点。其他部分与前一个查询相同。
请注意,在 InfluxDB 2.0 中,时间戳始终是 UTC 时间。如果您使用的是本地时间,请在查询中转换为 UTC 时间。




