2017-09-23 2 views
2

私は合計時間の2時間を合計することができる文字列(mysql)を探しています。私は何か正しいものを見つけることができません。SUM hours.minutes as total hours.minutes

例:

id| time_spent| 
1 | 10.15  | 
2 | 10.15  | 
3 | 10.15  | 
4 | 10.15  | 
5 | 10.15  | 

私がすることで、これを合計することができ:

Select sum(time_spent) as total_hours from table 

が、結果は次のとおりです。私はしましたが、50:75 51:15

ようにする必要がありますこれも試しました:

SELECT SEC_TO_TIME(SUM(SEC_TO_TIME(`time_spent`))) 
AS total_time FROM table 

しかし、結果は次のとおりです。午前0時00分50秒

SELECT SEC_TO_TIME(SUM(SECOND(time_spent))) AS total_time FROM 
table 

が、結果は次のとおりです。00:00:50.750000

から合計正しいhours.minutesを得るためにあらゆる可能性ありこれらの記録は?

+1

どのようなタイプは、 'time_spent'のですか? – BenM

+0

ちょうどタイプミス、私は思います。 'SEC_TO_TIME(SUM(SEC_TO_TIME(' time_spent'))) 'は' SEC_TO_TIME(SUM(TIME_TO_SEC( 'time_spent')))'でなければなりません。 –

+0

time_spentはvarcharです。 –

答えて

1
DROP TABLE IF EXISTS my_table; 

CREATE TABLE my_table (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, t TIME NOT NULL); 

INSERT INTO my_table (t) VALUES 
('10:15:00'), 
('10:15:00'), 
('10:15:00'), 
('10:15:00'), 
('10:15:00'); 

SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(t))) x FROM my_table; 
+----------+ 
| x  | 
+----------+ 
| 51:15:00 | 
+----------+ 
1

私の提案には、適切なデータタイプ(timeなど)も使用されます。しかし、あなたがvarcharを持っているというこのアイデアに悩まされているなら、あなたは数秒であなたの時間を変換し、それを合計して元に戻すことができます。

TIME_TO_SEC形式HH期待:MMを、しかし、あなたのベストショットを解析することになるので、あなたは、そこにいくつかの空想の浮動小数点を持っている:

TIME_TO_SEC(SUM(STR_TO_DATE(time_spent,'%H.%i')));