MySQL에서 시간을 계산하는 방법은 무엇입니까? 그래서 아래로 아래와 같은 테이블이 있습니다MySQL 그룹에서 ID로 시간을 계산하는 방법은 무엇입니까?
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 |
MySQL에서 시간을 계산하는 방법은 무엇입니까? 그래서 아래로 아래와 같은 테이블이 있습니다MySQL 그룹에서 ID로 시간을 계산하는 방법은 무엇입니까?
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 |
내 생각은 당신이 원하는 것은 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
을 수행 할 수 있음) 그 합계를 시간 형식으로 형식화했습니다.
시간을 초 단위로 변환 한 다음 요약하여 다시 포맷 할 수 있습니다.
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 난 그냥 시간을 합산 할 필요가
데모를 참조 할 수있는 방법을 할까? –
이것은 시간 합계를 반환합니다. 실행 해 보셨습니까? @devian –