0

我有一些看起来像这样的数据:

我的表

姓名 开始 结尾
密歇根州 20 年 11 月 6 日 08.25.59.000000000 上午 20 年 11 月 6 日 08.44.52.000000000 上午
状态 20 年 11 月 22 日 11.49.11.000000000 上午 20 年 11 月 22 日上午 11.54.06.000000000

我正在尝试创建一个新列来计算持续时间作为开始和结束之间的差异。然后我想应用一个数学平均值(平均值/中位数)来找到每年的平均持续时间。

我的代码,目前:

SELECT
    start - end AS duration
FROM
    my_table

电流输出:

期间
-0 0:18:53.0
-0 0:4:55.0

我想要的是:

期间
1133
295

如何将持续时间字段从日期时间转换为秒或分钟,以便我可以将平均函数应用于持续时间字段?

4

2 回答 2

0

我在网上找到了这个。这会有帮助吗?

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:10729709873260

于 2021-11-15T09:16:18.383 回答
0

我建议您花一些时间阅读您的版本的 Oracle 文档,还可以快速了解日期/时间戳,请参见此处(不仅仅是第一个子主题)。
您的问题是日期/时间戳减法的结果是什么。您可以获得两个结果。减去日期会得到一个浮点数,其中整数部分代表天数,小数部分代表一天的小数部分。减去时间戳会产生数据类型Interval Day to Second。这个案例处理时间戳。Extract用于获取区间的各个组成部分。由于您在持续时间(以秒为单位)之后,您提取每个组件乘以适当的值以转换为秒,并对结果进行总计:

select  extract(day from diff) * 60 * 60 * 24     -- days to seconds
      + extract(hour from diff) * 60 * 60         -- hours to seconds
      + extract(minute from diff) * 60            -- minutes to seconds
      + extract(second from diff)                 -- seconds
from ( 
      select to_timestamp('06-NOV-20 08.44.52.000000000 AM', 'dd-mon-yy hh12.mi.ss.ff AM')
           - to_timestamp('06-NOV-20 08.25.59.000000000 AM', 'dd-mon-yy hh12.mi.ss.ff AM') diff
        from dual
     );
于 2021-11-15T20:48:35.103 回答