From d35bfb0c18511b3dea18c45d3eb6dd24b2fb7ae4 Mon Sep 17 00:00:00 2001 From: fengyarnom Date: Thu, 15 May 2025 16:46:26 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86SQL?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/dao/sensor.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) 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,