如何将MI:SS格式时间转换为整数存入PostgreSQL数据库?
将「分钟:秒」格式字符串转换为PostgreSQL整数秒数
你可以用两种简单的方法实现这个转换:
方法1:拆分字符串计算总秒数
通过split_part函数按冒号拆分字符串,分别提取分钟和秒的数值,再计算总秒数:
-- 单个值转换示例 SELECT (split_part('02:39', ':', 1)::int * 60) + split_part('02:39', ':', 2)::int AS total_seconds;
输出结果为159。如果处理表中字段,替换字符串为字段名即可:
SELECT (split_part(time_column, ':', 1)::int * 60) + split_part(time_column, ':', 2)::int AS total_seconds FROM your_table;
方法2:利用时间间隔函数转换
把字符串转成interval类型,再提取总秒数:
-- 单个值转换示例 SELECT EXTRACT(EPOCH FROM to_interval('02:39'))::int AS total_seconds;
同样能得到159。字段处理版本:
SELECT EXTRACT(EPOCH FROM to_interval(time_column))::int AS total_seconds FROM your_table;
额外提示:格式校验
如果输入字符串可能存在格式不规范的情况(比如分钟数超过59、包含非数字字符),可以先做正则校验避免转换出错:
SELECT CASE WHEN time_column ~ '^\d{1,2}:\d{2}$' THEN (split_part(time_column, ':', 1)::int * 60) + split_part(time_column, ':', 2)::int ELSE NULL -- 也可根据需求抛出错误或返回默认值 END AS total_seconds FROM your_table;
内容的提问来源于stack exchange,提问作者Jennifer
相关产品推荐
相关产品推荐

