time - 由于 UTC 和我的时区,每天查询 InfluxDB 的特定时间,这些时间跨越不同的日子
问题描述
我正在查询 influxdb 以在 grafana 中生成图表。Influxdb 包含 kW 太阳能发电量,每 5 秒有一个时间戳。我想汇总每天下午 4 点到 9 点的太阳能发电量。在 UTC 中,这变为 2300 到 0400。我可以做 2300 到 0000 和单独的 0000 到 0400,但我不知道如何将这些与 grafana 一起添加。或者在一个查询中执行 2300-0400 会很好。这是我对 2300 到 0000 和 0000 到 0400 的 2 个查询:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(1h)) WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(24h,23h)
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-05' GROUP BY time(4h)) WHERE TIME >'2019-10-05' GROUP BY time(24h)
更新:以下适用于我想要的时间跨度的 1 小时:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(1h)) WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(24h,16h) tz('America/Los_Angeles')
但是,如果我将时间跨度增加到 2 小时,它会返回错误的结果:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(2h)) WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(24h,16h) tz('America/Los_Angeles')
解决方案
您可以使用时区TZ
子句https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/#the-time-zone-clause
您也可以从 23:00 分组开始time(5h)
(基本上包括第二天的数据并在当天的 23:00 点保存),然后在 24 小时内获取最后一个(而不是第一个)结果.
所以像(注意额外的as kW
别名)
SELECT last("kW") FROM ( SELECT integral("kW",1h) as kW FROM "solar" WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(5h)) WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(24h)
或者做上面的+TZ。
不确定在您的用例中究竟有什么用。
推荐阅读
- python - 如何指定我想要输出的位置?
- ruby-on-rails - 联接表中的 ActiveRecord 自定义外键只在一个方向起作用
- reactjs - React 组件确实挂载了,但实际上声明为未挂载
- apache-flink - 有状态的函数 Flink 与 Hbase 和 Redis 的交互
- python - 从按钮显示多个图像
- django - git push Heroku main - 错误:src refspec main 不匹配任何
- java - 偏移量 369250 处的预期 ='endstream' 实际 ='' 错误出现在某些 pdf 中
- powershell - 动力外壳 | 通过使用 csv 或 txt 导入用户获取文件夹 ACL
- c# - 使用 InsightDb 更新到 .Net core 3.1 后,sql 事务无法正常工作
- javascript - 以单个表单发送多个 DIV 容器内容