sql >> Database >  >> RDS >> Mysql

GROUP BY interval overlappende tijdstempel MySQL-query

Ik denk dat je de uren gewoon op 5 wilt zetten, om consistent te zijn met je bereik. Zo ja, dan kunt u dit doen:

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) 

Maar ik denk dat je dit misschien iets anders wilt formuleren:

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)

Hierdoor worden de datums op de grens van 5 uur opnieuw uitgelijnd.

Opmerking:deze zoekopdrachten zijn niet getest en kunnen daarom syntaxisfouten bevatten.

Dit veronderstelt dat de tijdstempel echt een datetime is. Als het een UNIX-tijdstempel is, moet u deze eerst converteren.




  1. heroku pg:pull wachtwoord authenticatie mislukt

  2. probleem om verbinding te maken met een externe mysql-database met behulp van php

  3. Oracle:hoe kan ik een natuurlijke volgorde in een SQL-query implementeren?

  4. json_encode en highcharts