diff --git a/internal/dao/sensor.go b/internal/dao/sensor.go index c07dc4c..3468a83 100644 --- a/internal/dao/sensor.go +++ b/internal/dao/sensor.go @@ -47,7 +47,12 @@ func (dao *SensorDAO) GetAggregatedData(start, end time.Time, interval string) ( case "5min": query = ` SELECT - DATE_FORMAT(timestamp, '%Y-%m-%dT%H:%i:%s') as ts, + DATE_FORMAT( + FROM_UNIXTIME( + FLOOR(UNIX_TIMESTAMP(timestamp)/(5*60))*(5*60) + ), + '%Y-%m-%dT%H:%i:00' + ) as ts, ROUND(AVG(temperature)/10, 1) as avg_temp, MAX(rainfall) - MIN(rainfall) as rainfall, ROUND(AVG(humidity)/10, 1) as avg_humidity, @@ -60,7 +65,12 @@ func (dao *SensorDAO) GetAggregatedData(start, end time.Time, interval string) ( case "30min": query = ` SELECT - DATE_FORMAT(timestamp, '%Y-%m-%dT%H:%i:%s') as ts, + DATE_FORMAT( + FROM_UNIXTIME( + FLOOR(UNIX_TIMESTAMP(timestamp)/(30*60))*(30*60) + ), + '%Y-%m-%dT%H:%i:00' + ) as ts, ROUND(AVG(temperature)/10, 1) as avg_temp, MAX(rainfall) - MIN(rainfall) as rainfall, ROUND(AVG(humidity)/10, 1) as avg_humidity, @@ -73,7 +83,12 @@ func (dao *SensorDAO) GetAggregatedData(start, end time.Time, interval string) ( default: // 1hour query = ` SELECT - DATE_FORMAT(timestamp, '%Y-%m-%dT%H:%i:%s') as ts, + DATE_FORMAT( + FROM_UNIXTIME( + FLOOR(UNIX_TIMESTAMP(timestamp)/3600)*3600 + ), + '%Y-%m-%dT%H:00:00' + ) as ts, ROUND(AVG(temperature)/10, 1) as avg_temp, MAX(rainfall) - MIN(rainfall) as rainfall, ROUND(AVG(humidity)/10, 1) as avg_humidity,