I’m using InfluxDB with Grafana to work out the daily differences between various values, eg: electricity and gas meter readings at the beginning and end of a day. I have the following query:
SELECT difference(last(“value”)) FROM “MEMT1” WHERE $timeFilter GROUP BY time(1d) fill(null)
However the result of this query is a value summed from 1:00am - 00:59 am rather than from 0:00am to 23:59. (See image) I cannot figure out how to force the query to calculate the difference from midnight to midnight. Is this a timezone problem? If so, how can I control the timezone setting? Or is it something else?
Thanks in advance.
BTW, I originally posted this on the Influx community, but it seems pretty dead over there…
tbh. I don’t think it’s a timezone “issue”, rather than influxDB telling you “the data from hour ‘0’ is the ‘first hour of the day’, so I’m putting a 01:00:00” there.
Could you try the following;
SELECT difference(last(“value”)) from "MEMT1"
WHERE time >= 'YYYY-MM-DDT00:00:00'
AND time < 'YYYY-MM-DDT00:00:00'
GROUP BY time(1d)
Thanks for the suggestion. But doesn’t this result in a fixed period query? I’ll try it out to see if it delivers the correct results, but if it is a fixed period it won’t be the final solution.
Oh, one other thing. The calculation the Influx makes starts with data from 01:00, not from 00:00. So it’s shifted in time by one hour. Specifically, the following openhab rule calculates the correct value for a given day (offset):
energy = (MEMT1.historicState(now.withTimeAtStartOfDay.minusDays(offset)).state as Number) - (MEMT1.historicState(now.withTimeAtStartOfDay.minusDays(offset+1)).state as Number)
The figures that the latter calculation returns correspond with the figures that I get from the meter itself.
How are you using InfluxDB? If you use it via Docker make sure that all containers are using the same / the host timezone. Details see in this post: InfluxDB+Grafana persistence and graphing
Hi there,
that’s interesting - you could put a ‘Z’ at the end of your times (like 2020-03-01T00:00:00Z). Normally you’d do this if your time is in UTC and you don’t want to have an offset (we’re basically trying now to see if you really don’t have a TZ issue).