sql >> Databasteknik >  >> RDS >> Mysql

GROUP BY intervall överlappande tidsstämpel MySQL-fråga

Jag tror att du bara vill ställa in timmarna till 5, för att överensstämma med ditt intervall. Om så är fallet kan du göra så här:

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) 

Men jag tror att du kanske vill formulera det här lite annorlunda:

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)

Detta justerar faktiskt datumen på 5-timmarsgränsen.

Obs:dessa frågor är oprövade, så de kan innehålla syntaxfel.

Detta förutsätter att tidsstämpeln verkligen är en datumtid. Om det är en UNIX-tidsstämpel måste du konvertera den först.




  1. 12 MySQL/MariaDB Säkerhet Best Practices för Linux

  2. Bästa metoder för URL med blanksteg och specialtecken

  3. Hur upprepar jag ett resurs-id #6 från ett MySql-svar i PHP?

  4. välja data från tabell baserat på datum