【发布时间】:2023-03-11 15:44:02
【问题描述】:
我正在尝试将 InfluxDB 用于时间序列数据存储解决方案,但在使用具有不同时区的 InfluxDB 时遇到了问题。
本质上,我将所有数据点写入带有 UTC 时间戳的 InfluxDB,但在查询中使用服务器的本地时区指定时间戳范围会非常方便(尤其是对于测试)。
有人知道如何在 InfluxDB 中实现这一点吗?
【问题讨论】:
标签: influxdb
我正在尝试将 InfluxDB 用于时间序列数据存储解决方案,但在使用具有不同时区的 InfluxDB 时遇到了问题。
本质上,我将所有数据点写入带有 UTC 时间戳的 InfluxDB,但在查询中使用服务器的本地时区指定时间戳范围会非常方便(尤其是对于测试)。
有人知道如何在 InfluxDB 中实现这一点吗?
【问题讨论】:
标签: influxdb
您可以在查询 Influxdb 之前或之后计算时区,这是我看不到的另一种解决方案。顺便说一句,在任何地方都使用 utc 时区,这是一个非常好的决定,并且只在最后一点需要计算到时区。
【讨论】:
我住在太平洋的另一端,我使用 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)
【讨论】:
鉴于displaying the time in a specified timezone isn't possible,我认为也无法设置时区来解释查询中的时间值。
您可以做的最好的事情是在每个时间值中指定 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')
【讨论】: