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

MySQL技术问询:基于Signalling IP分组计算两时间列时长差

MySQL查询方案:按Signalling IP分组并计算时长差值

嘿,我来帮你构建符合需求的MySQL查询语句。根据你的描述,我们需要完成两个核心任务:筛选指定Signalling IP的记录,同时计算每条记录(或每组)的时长差值,下面分两种场景给出具体方案:

场景1:筛选指定IP并显示每条记录的时长差

如果你需要保留指定IP的所有原始记录,同时计算每条记录中Start Time与Disconnect Time的时长差值(以带毫秒的秒数为例),可以用这个查询:

SELECT 
    `Start Time`,
    `Disconnect Time`,
    `Signalling IP`,
    -- 计算时长差,转换为带毫秒的秒数
    TIMESTAMPDIFF(MICROSECOND, `Start Time`, `Disconnect Time`) / 1000 AS duration_seconds
FROM 
    your_table_name  -- 替换成你的实际表名
WHERE 
    `Signalling IP` = '1.1.1.1';  -- 替换成你要筛选的IP

关键说明:

  • 由于列名包含空格,必须用**反引号``**包裹列名,避免语法错误
  • TIMESTAMPDIFF函数支持精确到微秒的时间差计算,除以1000后得到保留三位小数的秒数(对应原始数据的毫秒部分)
  • 去掉WHERE子句即可返回所有IP的记录及对应时长差

场景2:按Signalling IP分组统计时长

如果需要按Signalling IP分组,计算每组的总时长、平均时长等统计值,可以用这个查询:

SELECT 
    `Signalling IP`,
    SUM(TIMESTAMPDIFF(MICROSECOND, `Start Time`, `Disconnect Time`) / 1000) AS total_duration_seconds,
    AVG(TIMESTAMPDIFF(MICROSECOND, `Start Time`, `Disconnect Time`) / 1000) AS avg_duration_seconds,
    COUNT(*) AS total_records  -- 统计每组的记录数量
FROM 
    your_table_name
-- 可选:保留WHERE子句筛选指定IP,去掉则统计所有分组
WHERE 
    `Signalling IP` = '1.1.1.1'
GROUP BY 
    `Signalling IP`;

关键说明:

  • GROUP BY Signalling IP``会将相同IP的记录归为一组
  • SUM和AVG函数分别计算每组的总时长和平均时长,同样保留毫秒精度
  • 可以根据需求添加更多聚合函数(比如MAX/MIN时长)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:15:26