【问题标题】:Configuring timezones in InfluxDB在 InfluxDB 中配置时区
【发布时间】:2023-03-11 15:44:02
【问题描述】:

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

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

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

【问题讨论】:

    标签: influxdb


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答;这就是我想做的——在应用程序代码中进行所有计算。只要一切一致,一般都可以;仅在对数据进行一些手动测试时,这会给您带来些许不便..
    【解决方案2】:

    我住在太平洋的另一端,我使用 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)
    

    【讨论】:

      【解决方案3】:

      鉴于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')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多