J'ai un ensemble de résultats qui ressemble à quelque chose comme ceci:MySQL: Comment SUM() un TIMEDIFF() sur un groupe?
SELECT User_ID, StartTime, EndTime, TIMEDIFF(EndTime, StartTime) AS TimeDiff
FROM MyTable
------------------------------------------------------------------
| User_ID | StartTime | EndTime | TimeDiff |
------------------------------------------------------------------
| 1 | 2010-11-05 08:00:00 | 2010-11-05 09:00:00 | 01:00:00 |
------------------------------------------------------------------
| 1 | 2010-11-05 09:00:00 | 2010-11-05 10:00:00 | 01:00:00 |
------------------------------------------------------------------
| 2 | 2010-11-05 06:30:00 | 2010-11-05 07:00:00 | 00:30:00 |
------------------------------------------------------------------
| 2 | 2010-11-05 07:00:00 | 2010-11-05 09:00:00 | 02:00:00 |
------------------------------------------------------------------
| 2 | 2010-11-05 09:00:00 | 2010-11-05 10:00:00 | 01:00:00 |
------------------------------------------------------------------
Maintenant je dois grouper les résultats par User_ID
et SUM()
TIMEDIFF. Si j'ajoute une clause GROUP BY
, ce n'est pas SUM()
le TimeDiff (et je ne m'y attendrais pas). Comment puis-je SUM()
les TimeDiffs pour chaque utilisateur?
Damn, aurait dû savoir' TIME_TO_SEC' plus tôt, moi et mon kludgy ' CONCAT's avec date aléatoire .... +1 pour vous! – Wrikken
@Wrikken: les horodateurs de l'époque ne fonctionnaient pas très bien, donc j'ai dû improviser :) –
désolé, j'aurais dû être plus précis. Les heures de début/fin sont en réalité des datetimes. Cela change-t-il votre réponse? – Andrew