sql >> Base de Datos >  >> RDS >> Mysql

GRUPO POR intervalo de superposición de marca de tiempo MySQL consulta

Creo que solo desea establecer las horas en 5, para ser coherente con su rango. Si es así, puedes hacer esto:

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) 

Pero, creo que en realidad podrías querer expresar esto de manera un poco 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)

Esto realmente realinea las fechas en el límite de 5 horas.

Nota:estas consultas no se han probado, por lo que pueden contener errores de sintaxis.

Esto supone que la marca de tiempo es realmente una fecha y hora. Si es una marca de tiempo UNIX, primero debe convertirla.