前言
由于influxDB使用UTC记录时间,而在国区内会有大约8个小时的时间差。再加上系统的使用关系,可能会导致初次使用influxDB写入数据产生一些问题。
问题1,使用webui手工导入line protocol查询不到数据
原因
手工导入line protocol数据时需要手工指定导入数据的时间戳精度,否自会导致导入数据丢失
解决办法
根据数据的时间戳精度选择手工导入的数据精度
问题2,导入数据后当期时间段查询不到数据
原因
由于influxDB使用UTC记录时间,而在国区内会有大约8个小时的时间差。录入数据后,需要基于这8个小时的时间差做偏移计算
解决办法
录入数据后,需要基于这8个小时的时间差做偏移计算。
示例:
import "timezone"
option location = timezone.fixed(offset: 8h)
from(bucket: "mydb")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "home")
|> filter(fn: (r) => r["_field"] == "co" or r["_field"] == "hum" or r["_field"] == "temp")
|> filter(fn: (r) => r["room"] == "Living Room")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")依赖文档:
https://docs.influxdata.com/flux/v0/stdlib/timezone/#Copyright
官方解释:
https://www.influxdata.com/blog/time-zones-in-flux/
其他资料
InfluxDb 时间范围查询踩坑
问题:最近查询influxdb数据的时候,数据查不出来,分析发现查询数据少了 8 小时。
查询语句:
SELECT cpu_used FROM host.host where time >= '2019-10-18T00:00:00Z' and time < '2019-10-23T00:00:00Z' group by time(1d)原因分析:因为influxdb查询的时候默认使用UTC时间查询(零时区),而我们想要查询的时间应该是使用东八区时间(比零时区时间快了8个小时)。
解决方法:查询语句的最后加TZ('Asia/Shanghai'),即可解决。
查询语句更改为:
SELECT cpu_used FROM user_day where time >= '2019-10-18T00:00:00Z' and time < '2019-10-23T00:00:00Z' group by time(1d) TZ('Asia/Shanghai')。备注:如果这里的时间查询使用的是时间戳查询,则不存在时区的问题。所以能用时间戳查询就尽量用时间戳查询。


Comments | NOTHING