MySQL 使用sql计算类型时间的总和

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3054123/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 16:21:30  来源:igfitidea点击:

calculate a sum of type time using sql

sqlmysql

提问by kawtousse

How to caculate sum of times of my colonne called "timeSpent" having this format: HH:mm in SQL? I am using MySQL.

如何计算具有以下格式的名为“timeSpent”的冒号的时间总和:SQL 中的 HH:mm?我正在使用 MySQL。

the type of my column is Time.

我的专栏类型是时间。

it has this structure

它有这个结构

TimeFrom like  10:00:00           12:00:00     02:00:00
TimeUntil      08:00:00           09:15:00     01:15:00
Time spent      

total time 03:15:00

回答by Siri

SELECT  SEC_TO_TIME( SUM( TIME_TO_SEC( `timeSpent` ) ) ) AS timeSum  
FROM YourTableName  

This worked for me. Hope this helps.

这对我有用。希望这可以帮助。

回答by Developerscentral

100% working code to get sum of time out of MYSQL Database:

从 MYSQL 数据库中获取时间总和的 100% 工作代码:

SELECT
SEC_TO_TIME( SUM(time_to_sec(`db`.`tablename`))) 
As timeSum
FROM
`tablename`

Try and confirm. Thanks.

尝试并确认。谢谢。

回答by Mike Dinescu

If the data type of the timeSpentcolumn is TIMEyou should be able to use the following query:

如果timeSpent列的数据类型是TIME您应该能够使用以下查询:

SELECT SUM(timeSpent) 
  FROM YourTableName    -- replace YourTableName with the actual table name

However, if that is not the case, you may have to use a cast to convert to the Timedata type. Something like this should work:

但是,如果情况并非如此,您可能必须使用强制转换来转换为Time数据类型。这样的事情应该工作:

SELECT SUM(timeSpent - CAST('0:0:0' as TIME)) 
  FROM YourTableName    -- replace YourTableName with the actual table name

回答by Lèse majesté

In MySQL, you would do something like this to get the time interval:

在 MySQL 中,您可以执行以下操作来获取时间间隔:

SELECT TIMEDIFF('08:00:00', '10:00:00');

Then to add the time intervals, you would do:

然后添加时间间隔,你会这样做:

SELECT ADDTIME('01:00:00', '01:30:00');

Unfortunately, you're not storing dates or using 24-hour time, so these calculations would end up incorrect since your TimeUntilis actually lower than your TimeFrom.

不幸的是,您没有存储日期或使用 24 小时制,因此这些计算最终会不正确,因为您TimeUntilTimeFrom.

Another approach would be (assuming you sort out the above issue) to store the time intervals as seconds using TIMESTAMPDIFF():

另一种方法是(假设您解决了上述问题)使用TIMESTAMPDIFF()以下方法将时间间隔存储为秒:

UPDATE my_table SET time_spent=TIMESTAMPDIFF(start, end));
SELECT SEC_TO_TIME(SUM(time_spent)) FROM my_table;