Time 根据UTC和我的时区,查询每天不同日期的特定小时数

Time 根据UTC和我的时区,查询每天不同日期的特定小时数,time,intervals,grafana,influxdb,Time,Intervals,Grafana,Influxdb,我正在查询XDB以生成grafana中的图形。XDB包含千瓦太阳能生产,每5秒有一个时间戳。我想每天下午4点到9点合计太阳能产量。在UTC中,这变为2300到0400。我可以做2300到0000,也可以分别做0000到0400,但我不知道如何将这些加在一起。或者在一个查询中执行2300-0400也不错。以下是我对2300到0000和0000到0400的两个查询: SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "sol

我正在查询XDB以生成grafana中的图形。XDB包含千瓦太阳能生产,每5秒有一个时间戳。我想每天下午4点到9点合计太阳能产量。在UTC中,这变为2300到0400。我可以做2300到0000,也可以分别做0000到0400,但我不知道如何将这些加在一起。或者在一个查询中执行2300-0400也不错。以下是我对2300到0000和0000到0400的两个查询:

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)
更新: 以下内容适用于我想要的时间跨度的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')
但是,如果我将timespan增加到2h,它将返回错误的结果:

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
子句

您也可以在23:00开始分组,按
时间(5h)
(基本上包括第二天的数据,并在当天23:00保存),然后在24小时内获取最后一个(而不是第一个)结果

比如(注意额外的
as kW
别名)

或者执行上述+TZ。

不确定在您的用例中,什么具体起作用。

我不确定时间(5h)是否能在多天内起作用。我认为你是第一个还是最后一个并不重要,因为5小时不等于24小时。因此,对于第一天,它可能会工作,但对于第二天,“第一”或“最后”时间段是不同的。请参阅上面的更新。使用时区规范,我可以返回我想要的时间跨度的1h,但是如果我将它增加到2h,那么它就不会返回正确的值。困惑。关于你的第一个评论,它在你给它的任何时间段都有效,所以它应该包括第二天的数据,但你是对的,5小时的时间段不适合24小时,我不知怎么地说服自己,它确实。。。关于你的第二条评论,在某种程度上取决于你的数据。如果按2h分组,是否必须调整积分,使其也能在2h内工作?积分超过一小时才能得到kWh。我有一种感觉,因为它转换成Z,然后又经过两天。我会再检查一次,在早些时候,所有这些不同的时间跨度都是有效的,只要它们不跨越两天。我可能应该在某个XDB网站上发布?
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') 
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)