簡體   English   中英

時差總和-Oracle SQL

[英]Sum of time difference - Oracle SQL

我有一張桌子:

表格1

col1    start_date_time                 end_date_time
Test1   01-06-19 11:43:35.927422000 AM  01-06-19 11:44:20.127907000 AM
Test2   01-06-19 11:44:28.703518000 AM  01-06-19 11:45:06.538883000 AM
Test3   01-06-19 11:42:18.784477000 AM  01-06-19 11:42:27.635102000 AM

我寫了一個查詢,給了我時差:

select a.*, end_date_time - start_date_time exec_time from table1 a
order by exec_time desc;

輸出表

col1    start_date_time                 end_date_time                   exec_time
Test1   01-06-19 11:43:35.927422000 AM  01-06-19 11:44:20.127907000 AM  +00 00:00:44.200485
Test2   01-06-19 11:44:28.703518000 AM  01-06-19 11:45:06.538883000 AM  +00 00:00:37.835365
Test3   01-06-19 11:42:18.784477000 AM  01-06-19 11:42:27.635102000 AM  +00 00:00:08.850625

我需要像00:01:29這樣的總和。

如何在SQL中匯總exec_time? 我需要找到總時間。

Oracle不支持間隔數據類型的聚合,這令人遺憾,因為這將是解決此類問題的最簡單方法。 但是, Stew Ashton的頑強思想提出了一種將間隔轉換為數字然后再次返回的解決方案

select numtodsinterval(  
  sum(  
    (sysdate+(end_date_time - start_date_time) - sysdate) * 24 * 60 * 60
        + extract(second from (end_date_time - start_date_time)) 
              - trunc(extract(second from (end_date_time - start_date_time))) -- (*)
  )  
  , 'second'  
)  
from table1; 

這是db <> fiddle上的演示

(*)該行使答案精確到微秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM