Im Folgenden erhalten Sie ein Beispiel, das aus beliebigen Daten mit einem Zeitstempel um :00, :05, :10 ...
bestehtSELECT time, temp_out FROM wmr200 WHERE date(time) = curdate()
AND mod(minute(time),5) = 0
Ich verwende die Modulo-Funktion, um zu prüfen, ob der Minutenteil der Zeit (0 oder) durch 5 teilbar ist.
Wenn Sie nur ein Ergebnis für jeden Zeitabschnitt benötigen, müssen wir etwas komplexer werden.
SELECT concat(date(time),' ',hour(time),':',round(minute(time)/5,0)*5),
min(temp_out), avg(temp_out), max(temp_out)
FROM wmr200
GROUP BY date(time), hour(time), round(minute(time)/5,0)*5
Ich habe derzeit keinen Zugriff auf eine MySQL-Instanz, um es auszuprobieren, aber hier ist die Idee. Es gruppiert alle fünf Minuten, indem es nach Datum, Stunde und round(minute(time)/5,0)*5
gruppiert - was die Minute auf die nächsten 5 rundet.
Es wählt den Zeitwert aus, um den es gruppiert werden soll, und das min., avg. und max. temp_out, da ich nicht sicher war, welches davon am besten auf Ihre Situation zutrifft.
Wenn Ihre DB jedoch keine Daten für einen 5-Minuten-Abschnitt (oder einen 30-Minuten-Abschnitt, falls Sie diesen verwenden) enthält, enthält sie möglicherweise immer noch keine Daten für einen Beispielpunkt.