如何计算MySQL中的时间?所以我有下面的表格:
id | time |
01 | 00:36:00 |
01 | 01:00:00 |
02 | 00:30:00 |
我需要时间按照这样的ID来计算这个群体:
id | time |
01 | 01:36:00 |
02 | 00:30:00 |
答案 0 :(得分:0)
我认为你想要的是sum
SELECT
RIGHT('0' + CAST (FLOOR(COALESCE (SUM(
datediff(second,
cast('1900-01-01' as datetime),
cast(time as datetime)
)/3600.0), 0) / 60) AS VARCHAR (8)), 2)
+ ':' +
RIGHT('0' + CAST (FLOOR(COALESCE (SUM(
datediff(second,
cast('1900-01-01' as datetime),
cast(time as datetime)
)/3600.0), 0) % 60) AS VARCHAR (2)), 2) + ':' +
RIGHT('0' + CAST (FLOOR((SUM(
datediff(second,
cast('1900-01-01' as datetime),
cast(time as datetime)
)/3600.0)* 60) % 60) AS VARCHAR (2)), 2)
as DecimalHours
, ID
FROM #t
group by ID
我所做的是将您的时间首先转换为十进制(因此我们可以执行SUM
),然后将总和格式化为时间格式。
答案 1 :(得分:0)
您可以将时间转换为秒,然后总结并重新格式化。
SELECT
id,
CONCAT(
LPAD(FLOOR(seconds / 3600), 2, '0'), ':', -- hour
LPAD(FLOOR((seconds % 3600) / 60), 2, '0'), ':', -- minute
LPAD(seconds % 60, 2, '0')) as time -- second
FROM
(SELECT id,
SUM(CAST(SUBSTRING(time, 1, 2) AS UNSIGNED) * 3600
+ CAST(SUBSTRING(time, 4, 2) AS UNSIGNED) * 60
+ CAST(SUBSTRING(time, 7, 2) AS UNSIGNED)) AS seconds
FROM <your table name>
GROUP BY id) AS summary
您可以在此处引用演示http://rextester.com/INOI78655