繁体   English   中英

我可以在 sqlite3 中添加这种格式吗

[英]Can I add this format in 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 格式。

请注意,MySQL time数据类型只能处理“-838:59:59”到“838:59:59”之间的值。 如果您的总时间大于该时间,那么您将无法将其转换回time

一旦您以DATETIMEDATETIME格式存储日期,您就可以使用许多可用的日期和时间函数

您可以使用 function 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM