sql >> Databáze >  >> RDS >> Mysql

GROUP BY interval překrývající se časové razítko MySQL dotaz

Myslím, že jen chcete nastavit hodiny na 5, abyste byli v souladu s vaším rozsahem. Pokud ano, můžete to udělat takto:

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) 

Ale myslím, že byste to možná chtěli formulovat trochu jinak:

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)

To ve skutečnosti přerovná data na 5hodinovou hranici.

Poznámka:Tyto dotazy nejsou testovány, takže mohou obsahovat chyby syntaxe.

To za předpokladu, že časové razítko je skutečně datum a čas. Pokud se jedná o časové razítko UNIX, musíte jej nejprve převést.




  1. Použití PHP ke spuštění více MYSQL dotazů

  2. Jak udělat pivotování v Oracle 10g

  3. Nastavení geo-distribuovaného databázového clusteru pomocí replikace MySQL

  4. Vytvořte vícerozměrné pole z databázové tabulky