将持续时间字符串转换为秒整数

Convert duration string into seconds integer

我想将表示持续时间的字符串转换为整数形式的持续时间(以秒为单位)。

所有字符串的格式如下:

hh:mm:ss

我正在处理子字符串,我将其转换为整数,然后分别乘以 3600、60 或 1,最后对所有内容求和。

就像这样:

SELECT cast(substr(time_string, 1, 2) as smallint) * 3600 + cast(substr(time_string, 4, 2) as smallint) * 60 + cast(substr(time_string, 7, 2) as smallint) as seconds from table_name

由于我必须对多个字段执行此操作,因此我对实现此结果的更好方法很感兴趣。不过,我对更好的解决方案的搜索到目前为止没有成功。

如有任何意见或帮助,我将不胜感激!

尝试使用 date_parse, cast to time and use date_diff 和所需的单位:

select date_diff(
        'second',
        time '00:00:00', -- zero time
        cast(date_parse('12:10:56', '%T') as time)
    ) seconds

输出:

seconds
43856