将时间转换为持续时间

Convert time to duration

我在 table 中有原始数据,其中我以文本字符串“4:30 小时”的形式获得持续时间。解析它并将其转换为分钟的好方法是什么?例如,“4:30 小时”。将解析为整数 270.

Postgres 足够灵活,只需转换字符串 '4:30 hrs' 即可将其转换为 interval

然后剩下要做的就是将间隔转换为分钟,您可以从中提取 epoch,然后将结果除以 60

所以我会去:

extract(epoch from '4:30 hrs'::interval) / 60

Demo on DB Fiddle:

select mycol, extract(epoch from mycol::interval) / 60 res
from (values ('04:30 hrs'::text), ('29:40 hrs'::text)) as t(mycol)
mycol     | res 
:-------- | :---
04:30 hrs | 270 
29:40 hrs | 1780