【问题标题】:Querying InfluxDB with DateTime使用 DateTime 查询 InfluxDB
【发布时间】:2021-06-18 09:22:40
【问题描述】:

我正在使用 influxdb_client python 库进行 InfluxDB 操作。我想查询日期时间范围的数据。

time_query = from(bucket: "my_bucket") 
|> range(start: time(v: 1623781800), stop: time(v: 1623954600)) 
|> filter(fn: (r) => r["_measurement"] == "my_data")

我已经使用 datetime 库 timestamp() 函数将 DateTime 转换为时间戳,并将它们传递给查询的开始和停止,尽管即使该时间范围内存在数据,当我执行以下操作时,我也会得到空结果:

result = self.query_api.query(query=time_query)

有人可以指导我吗?

【问题讨论】:

    标签: python-3.x influxdb


    【解决方案1】:

    可能是您所经过的时区不同,因此在此期间没有可用的结果:
    Influx 使用 RFC 3339 格式,通过它您可以从格式中知道时区。它显示在
    “Z” syntax
    “Z”代表祖鲁时区,与 GMT 或 UTC “Z” means UTC+0 相同。
    因此,如果我们将 Z 放在 DateTime 上,则意味着它的时区是UTC+0.
    以下是将日期和时间转换为 z 格式的代码:

    import iso8601
    import pytz
    _date_obj=iso8601.parse_date("2018-09-07T04:57:58.050-07:00")
    print(_date_obj)
    _date_utc=_date_obj.astimezone(pytz.utc)
    _date_utc_zformat=_date_utc.strftime('%Y-%m-%dT%H:%M:%SZ')
    print(_date_utc_zformat)
    

    输出:

    2021-06-18 04:57:58.050000-07:00
    2021-06-18T11:57:58Z
    

    将此日期转换为时间戳:

    ts = _date_utc.timestamp()
    print("timestamp:-", ts)
    

    输出:

    timestamp:- 1624017478.05
    

    为了确认时间戳是否对应日期,我将使用unix命令:

    date -ud @1624017478.05
    

    输出:

    Fri, Jun 18, 2021 11:57:58 AM
    
    

    您可以在查询范围内使用此时间戳。
    注意:您也可以点击仪表板中的raw data 查看存储的时间格式并将其添加到您的查询。

    【讨论】:

      猜你喜欢
      • 2021-01-24
      • 2017-08-29
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 2022-09-29
      • 2017-04-20
      • 1970-01-01
      相关资源
      最近更新 更多