我正在尝试使用 InfluxDB 进行时间序列数据存储解决方案,并且在使用具有不同时区的 InfluxDB 时遇到问题。
本质上,我正在使用 UTC 时间戳将所有数据点写入 InfluxDB,但在查询中使用服务器的本地时区指定时间戳范围会非常方便(尤其是对于测试)。
有人知道如何在 InfluxDB 中实现这一点吗?
我正在尝试使用 InfluxDB 进行时间序列数据存储解决方案,并且在使用具有不同时区的 InfluxDB 时遇到问题。
本质上,我正在使用 UTC 时间戳将所有数据点写入 InfluxDB,但在查询中使用服务器的本地时区指定时间戳范围会非常方便(尤其是对于测试)。
有人知道如何在 InfluxDB 中实现这一点吗?
您可以在查询 Influxdb 之前或之后计算时区,这是我看不到的另一种解决方案。顺便说一句,在任何地方都使用 utc 时区,这是一个非常好的决定,并且只在最后一点需要计算时区。
鉴于不可能在指定的时区显示时间,我认为也不可能设置时区来解释查询中的时间值。
您可以做的最好的事情是在每个时间值中指定 GMT 偏移量,并tz('...')
在查询末尾添加匹配项,以显示所需时区的时间。
SELECT * FROM measurement
WHERE time >= '2020-01-10T23:45:56-04:00'
AND time < '2020-01-10T23:45:59-04:00'
tz('America/New_York')
我住在太平洋的另一端,我使用 python 将数据放入 influxdb。曾经,我非常渴望你的问题的答案。我放弃了搜索,因为官方没有提供实现这一目标的方法。因此,当我将数据放入 influxdb 时,我会将时间戳减少 28800。:) 当我需要查询时,我会做一些补偿工作,例如:
def fab_querytime(intime):
if isinstance(intime,basestring) and len(intime) == 12:
# my query time args like 201804061200
_t = arrow.get(intime,'YYYYMMDDHHmm')
_t = _t.replace(hours=-8)
return fab_querytime(_t)
if isinstance(intime,arrow.arrow.Arrow):
_str = intime.format('YYYY-MM-DDTHH:mm:ss') + '.000Z'
return str(_str)