Je pense que vous voulez juste régler les heures sur 5, pour être cohérent avec votre gamme. Si oui, vous pouvez le faire :
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)
Mais, je pense que vous pourriez en fait vouloir formuler cela un peu différemment :
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)
Cela réaligne en fait les dates sur la limite de 5 heures.
Remarque :ces requêtes n'ont pas été testées et peuvent donc contenir des erreurs de syntaxe.
Cela suppose que l'horodatage est vraiment une date/heure. S'il s'agit d'un horodatage UNIX, vous devez d'abord le convertir.