我正在构建一个MySQL查询。我有一个数据库表,我正在存储工作会话。它看起来像这样:
(int) id
(int) user_id
(timestamp) created_at
(timestamp) stopped_at
我希望能够以秒为单位检索每个日期的时间花费。 到目前为止,这是我的查询:
SELECT DATE(created_at) as date, TO_SECONDS(stopped_at) - TO_SECONDS(created_at) as time FROM work_sessions GROUP BY date;
这接近我想要的结果,但每个'日期'只包含组中第一行的时间。相反,我希望将日期的每个“时间”列聚合成一个结果。
答案 0 :(得分:1)
以这种方式试试
SELECT DATE(created_at) date,
SUM(TIMESTAMPDIFF(SECOND, created_at, stopped_at)) time
FROM work_sessions
GROUP BY DATE(created_at);
注意:这假设工作会话永远不会跨越午夜。
这是 SQLFiddle 演示
答案 1 :(得分:0)
这就是你想要的吗?
SELECT
DATE(created_at) as date,
GROUP_CONCAT(TO_SECONDS(stopped_at) - TO_SECONDS(created_at) SEPARATOR ", ") as time
FROM work_sessions
GROUP BY date;