我可以在sqlite3中添加此格式吗



我有一个名为time_spent的列,它类似于:hh:mm:ss。例如,00:23:11,这意味着它是23分11秒。我想知道我怎么能把这些加起来。像00:23:11+00:10:20=00:33:31这样说。我不知道如何在命令中直接做到这一点。我尝试过转换和CAST,但最终都失败了。如有任何帮助,我们将不胜感激。

您可以使用time_to_sec()将时间转换为秒,求和,然后使用sec_to_time()将结果转换为时间。

例如,以下查询将计算整个表的总time_spent

select sec_to_time(sum(time_to_sec(time_spent))) total_time_spent
from mytable

即使您的时间存储为字符串,这也会起作用,因为它们的格式符合time数据类型的MySQL格式。

请注意,MySQLtime数据类型只能处理介于"-838:59:59"到"838:59:59"之间的值。如果您的总时间大于此值,则无法将其转换回time

DATETIMEDATETIME格式存储日期后,您可以使用大量可用的日期和时间函数。

您可以使用函数time():

select time('00:23:11', '+00:10:20')

或者只是:

select time('00:23:11', '00:10:20')

结果:

00:33:31

如果总和可能超过24小时,例如,当您想将'23:59:59'添加到'00:23:11'时,请使用以下语句:

select 
case 
when strftime('%d', datetime('00:23:11', '23:59:59')) = '01' then time('00:23:11', '23:59:59')
else (24 + time('00:23:11', '23:59:59')) || strftime(':%M:%S', time('00:23:11', '23:59:59')) 
end

或者:

select 
(24 * (strftime('%d', datetime('00:23:11', '23:59:59')) - 1) + time('00:23:11', '23:59:59')) || 
strftime(':%M:%S', time('00:23:11', '23:59:59'))

结果:

24:23:10

最新更新