バッチ処理等で経過時間を出力する際に出番があります。地味ですが意外と困っていらっしゃる方多いようなので記載してみました。
経過時間表示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秒後