Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

GROUP BY intervalo de sobreposição de carimbo de data/hora consulta MySQL


Acho que você só quer definir as horas para 5, para ser consistente com o seu intervalo. Se sim, você pode fazer isso:
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) 

Mas, acho que você pode realmente querer expressar isso de maneira um pouco diferente:
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)

Isso realmente realinha as datas no limite de 5 horas.

Observação:essas consultas não foram testadas, portanto, podem conter erros de sintaxe.

Isso está assumindo que o timestamp é realmente um datetime. Se for um carimbo de data/hora do UNIX, você precisa convertê-lo primeiro.