【问题标题】:Convert time to duration将时间转换为持续时间
【发布时间】:2020-09-05 22:20:27
【问题描述】:

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

【问题讨论】:

  • 你能发布一个列表的例子吗?如果没有时间怎么办?是不是像0:40 hrs
  • 对,如果不到一个小时,那就是0:40 hrs.。或29:40 hrs. 如果超过一天。最大/最小时间有保证。

标签: sql postgresql datetime intervals date-arithmetic


【解决方案1】:

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)
麦考尔 |资源 :-------- | :--- 04:30 小时 | 270 29:40 | 1780

【讨论】:

  • 我必须去掉尾随的.,否则这行得通!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 2016-11-05
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多