Mysql
 sql >> Database >  >> RDS >> Mysql

GROUP BY Intervallo sovrapposizione timestamp query MySQL

Penso che tu voglia solo impostare le ore su 5, per essere coerente con il tuo intervallo. In tal caso, puoi farlo:

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) 

Ma penso che potresti effettivamente voler esprimere questo in modo leggermente diverso:

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)

Questo in realtà riallinea le date sul limite delle 5 ore.

Nota:queste query non sono state testate, quindi potrebbero contenere errori di sintassi.

Questo presuppone che il timestamp sia davvero un datetime. Se è un timestamp UNIX, devi prima convertirlo.