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

Oracle中如何计算耗时(秒级)的标准差?

计算时间差的标准差并转换为秒

要把时间差的标准差从天数转换为秒,直接将时间差乘以86400(一天的总秒数:24×60×60)即可,这是Oracle中处理DATE类型时间差转秒数的标准方法:

SELECT 
  STDDEV((end_proc_dt - start_proc_dt) * 86400) AS stddev_elapsed_seconds
FROM PROC_STAT ps
WHERE proc_id = 5350;

之前尝试失败的原因

  • CAST为NUMBER的问题:你只是调整了天数数值的精度,并没有转换单位,结果还是天数的标准差,当然不是你要的秒数。
  • EXTRACT(SECOND)报错的原因:end_proc_dt - start_proc_dt得到的是数值类型(代表天数),而非INTERVAL或TIMESTAMP类型,EXTRACT函数只能提取INTERVAL、TIMESTAMP这类时间类型的分量,所以会报错。如果非要用EXTRACT,得先把时间差转成INTERVAL类型,比如:
SELECT 
  STDDEV(EXTRACT(SECOND FROM NUMTODSINTERVAL(end_proc_dt - start_proc_dt, 'DAY'))) AS stddev_elapsed_seconds
FROM PROC_STAT ps
WHERE proc_id = 5350;

不过这种方式绕了弯路,直接乘以86400更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:02