diff --git a/src/services/queryRunner.service.ts b/src/services/queryRunner.service.ts index 044708f409d169f07a339ea2774a9e17ec241121..f4dd66206df7a83796b1b21740d03fe954152f9b 100644 --- a/src/services/queryRunner.service.ts +++ b/src/services/queryRunner.service.ts @@ -111,24 +111,33 @@ export default class QueryRunner { timePeriod: TimePeriod, timeStep: TimeStep ) { - // increase timeperiod range because the last data for a day is actually stored the next day at 00:00 - if (timeStep === TimeStep.HALF_AN_HOUR) { - timePeriod.startDate = timePeriod.startDate.plus({ minutes: 30 }) - timePeriod.endDate = timePeriod.endDate.plus({ minutes: 30 }) - } - const filteredResult = data.data.filter((entry: any) => - this.withinDateBoundaries( + const filterData = ( + entry: any, + timeStep: TimeStep, + timePeriod: TimePeriod + ) => { + const hour = timeStep === TimeStep.HALF_AN_HOUR ? entry.hour : 0 + const min = timeStep === TimeStep.HALF_AN_HOUR ? entry.minute : 0 + if (timeStep === TimeStep.HALF_AN_HOUR) { + // increase timeperiod range because the last data for a day is actually stored the next day at 00:00 + timePeriod.startDate = timePeriod.startDate.plus({ minutes: 30 }) + timePeriod.endDate = timePeriod.endDate.plus({ minutes: 30 }) + } + return this.withinDateBoundaries( DateTime.local( entry.year, entry.month || 1, entry.day || 1, - entry.hour, - entry.minute + hour, + min ).setZone('utc', { keepLocalTime: true, }), timePeriod ) + } + const filteredResult = data.data.filter((entry: any) => + filterData(entry, timeStep, timePeriod) ) return filteredResult }