Mysql
 sql >> Datenbank >  >> RDS >> Mysql

GROUP BY-Intervall überlappender Zeitstempel MySQL-Abfrage

Ich denke, Sie möchten die Stunden nur auf 5 setzen, um mit Ihrem Bereich übereinzustimmen. Wenn ja, können Sie Folgendes tun:

SELECT cast(date(stamp) as datetime) + interval 5 hour
       Sum(value) 
FROM   table 
WHERE  stamp >= Date_sub('2012-12-02 05:00:00', INTERVAL 1 day) 
       AND stamp < '2013-01-01 05:00:00' 
GROUP  BY Date(stamp) 

Aber ich denke, Sie möchten das vielleicht etwas anders formulieren:

SELECT cast(date(stamp - interval 5 hour) as datetime) + interval 5 hour
       Sum(value) 
FROM   table 
WHERE  stamp >= Date_sub('2012-12-02 05:00:00', INTERVAL 1 day) 
       AND stamp < '2013-01-01 05:00:00' 
GROUP  BY Date(stamp - interval 5 hour)

Dadurch werden die Daten tatsächlich an der 5-Stunden-Grenze neu ausgerichtet.

Hinweis:Diese Abfragen sind ungetestet und können daher Syntaxfehler enthalten.

Dies setzt voraus, dass der Zeitstempel wirklich eine Datumszeit ist. Wenn es sich um einen UNIX-Zeitstempel handelt, müssen Sie ihn zuerst konvertieren.