You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中拆分interval类型计算总秒数报错求助

PostgreSQL中把interval类型转成总秒数的正确方法

你用的STRING_SPLIT是SQL Server专属函数,PostgreSQL里根本没有这玩意儿,这就是你报错的主要原因。另外,tlm.data_qa_tele_freq()返回的是记录集,不能直接塞给字符串拆分函数当参数。

给你两种靠谱的实现方式:

方法一:用内置函数直接提取计算(强烈推荐)

PostgreSQL自带extract()函数,能直接从interval里抠出小时、分钟、秒,不用折腾字符串拆分,既简单又高效:

SELECT 
  extract(hour FROM avg_freq) * 3600 +
  extract(minute FROM avg_freq) * 60 +
  extract(second FROM avg_freq) AS total_seconds
FROM tlm.data_qa_tele_freq(183, 1001, now()::timestamp - interval '0.5 day', now()::timestamp);

方法二:字符串拆分实现(仅作参考,不推荐)

要是你非得拆字符串,用PostgreSQL的split_part()函数就行,先把interval转成文本,再按:拆分取对应部分:

SELECT 
  (split_part(avg_freq::text, ':', 1)::int * 3600) +
  (split_part(avg_freq::text, ':', 2)::int * 60) +
  split_part(avg_freq::text, ':', 3)::numeric AS total_seconds
FROM tlm.data_qa_tele_freq(183, 1001, now()::timestamp - interval '0.5 day', now()::timestamp);

补充:如果你的interval结果里包含天或者更大的单位,记得把天数转成秒(extract(day FROM avg_freq)*86400)加到总秒数里,按你说的返回格式是00:00:00,应该不用考虑这个情况。

内容的提问来源于stack exchange,提问作者JAOdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 16:50:24