5

我正在尝试使用 InfluxDB 进行时间序列数据存储解决方案,并且在使用具有不同时区的 InfluxDB 时遇到问题。

本质上,我正在使用 UTC 时间戳将所有数据点写入 InfluxDB,但在查询中使用服务器的本地时区指定时间戳范围会非常方便(尤其是对于测试)。

有人知道如何在 InfluxDB 中实现这一点吗?

4

3 回答 3

5

您可以在查询 Influxdb 之前或之后计算时区,这是我看不到的另一种解决方案。顺便说一句,在任何地方都使用 utc 时区,这是一个非常好的决定,并且只在最后一点需要计算时区。

于 2015-01-27T01:21:49.773 回答
1

鉴于不可能在指定的时区显示时间,我认为也不可能设置时区来解释查询中的时间值。

您可以做的最好的事情是在每个时间值中指定 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')
于 2020-01-14T23:57:37.643 回答
-1

我住在太平洋的另一端,我使用 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)
于 2018-04-12T03:43:35.177 回答