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

如何在Node.js中从PostgreSQL查询结果数组提取通话时长数值?

提取PostgreSQL通话时长的分钟和秒数

你用Node.js连接PostgreSQL获取通话时长数据后,得到的是包含PostgresInterval对象的数组,需要提取其中的minutes和seconds数值,以下两种简便方法可以解决:

方法一:在Node.js中处理结果数组

直接遍历查询结果的rows数组,提取每个call_time对象里的分钟和秒数,同时处理字段不存在的情况(比如无分钟/秒的记录默认设为0):

修改代码如下:

execute()
async function execute(){
  await client.connect()
  console.log("Connected")
  const results = await client.query("SELECT call_time FROM call_history_view WHERE src_dn ='207' and call_history_view.segment_start_time > current_date - interval '2 days'")
  
  // 提取分钟和秒数
  const processedData = results.rows.map(item => {
    return {
      minutes: item.call_time.minutes || 0,
      seconds: item.call_time.seconds || 0
    }
  })
  
  console.table(processedData)
  console.log(processedData)
  
  await client.end()
  console.log("Disconnected")
}

处理后会得到结构化的数值数组:

[
  { minutes: 0, seconds: 0 },
  { minutes: 1, seconds: 31 },
  { minutes: 1, seconds: 8 },
  { minutes: 2, seconds: 5 },
  { minutes: 0, seconds: 50 },
  { minutes: 2, seconds: 3 }
]

方法二:直接在SQL查询中转换为数值(更高效)

无需在Node.js端处理对象,直接在PostgreSQL查询时用EXTRACT函数提取分钟和秒的数值,返回结果直接是数字类型:

修改SQL语句和代码:

execute()
async function execute(){
  await client.connect()
  console.log("Connected")
  // 修改SQL,直接提取分钟和秒的数值
  const results = await client.query(`
    SELECT 
      EXTRACT(MINUTE FROM call_time) AS minutes,
      EXTRACT(SECOND FROM call_time) AS seconds
    FROM call_history_view 
    WHERE src_dn ='207' 
      AND call_history_view.segment_start_time > current_date - interval '2 days'
  `)
  
  console.table(results.rows)
  console.log(results.rows)
  
  await client.end()
  console.log("Disconnected")
}

这种方式返回的rows直接是包含数字字段的对象,无需额外处理:

[
  { minutes: 0, seconds: 0 },
  { minutes: 1, seconds: 31 },
  { minutes: 1, seconds: 8 },
  { minutes: 2, seconds: 5 },
  { minutes: 0, seconds: 50 },
  { minutes: 2, seconds: 3 }
]

推荐使用第二种方法,减少Node.js端的处理逻辑,直接从数据库获取目标数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:05:04