oracle

Oracle DATE型の引き算で経過時間を見やすく表示する

バッチ処理等で経過時間を出力する際に出番があります。地味ですが意外と困っていらっしゃる方多いようなので記載してみました。

経過時間表示SQL
select c1
,to_char( to_date( (c3-c2)*24*60*60,'SSSSS'),'HH24:MI:SS') as 経過時分秒
,(c3 - c2 )* 24*60*60 as 経過秒
,trunc((c3 - c2 ) * 24 * 60,3) as 経過分
from ex101
;
実効結果
SQL> select c1
  2  ,to_char( to_date( (c3-c2)*24*60*60,'SSSSS'),'HH24:MI:SS') as 経過時分秒
  3  ,(c3 - c2 )* 24*60*60 as 経過秒
  4  ,trunc((c3 - c2 ) * 24 * 60,3) as 経過分
  5  from ex101
  6  ;

        C1 経過時分秒           経過秒     経過分
---------- ---------------- ---------- ----------
         1 01:00:00               3600         60
         2 00:01:00                 60          1
         3 00:00:01                  1       .016

SQL>
検証用データ

検証用データは以下の通り作成しました

create table ex101
(
 c1 number
,c2 date
,c3 date
);
insert into ex101(c1,c2,c3) values (1,sysdate,sysdate+ 1/24);       -- 1時間後
insert into ex101(c1,c2,c3) values (2,sysdate,sysdate+ 1/24/60);    -- 1分後
insert into ex101(c1,c2,c3) values (3,sysdate,sysdate+ 1/24/60/60); -- 1秒後

TIMESTAMP型の引き算はこちらです

スポンサーリンク
タイトルとURLをコピーしました