Myślę, że chcesz po prostu ustawić godziny na 5, aby zachować spójność ze swoim zakresem. Jeśli tak, możesz to zrobić:
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 myślę, że możesz chcieć wyrazić to nieco inaczej:
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 faktycznie wyrównuje daty na granicy 5 godzin.
Uwaga:te zapytania nie są testowane, więc mogą zawierać błędy składniowe.
To przy założeniu, że znacznik czasu jest w rzeczywistości datą i godziną. Jeśli jest to znacznik czasu UNIX, musisz go najpierw przekonwertować.