タイプTIMESTAMP
の2つの変数を減算する場合 、INTERVAL DAY TO SECOND
を取得します これには、プラットフォームに応じてミリ秒またはマイクロ秒、あるいはその両方が含まれます。データベースがWindowsで実行されている場合は、systimestamp
通常はミリ秒になります。データベースがUnixで実行されている場合は、systimestamp
通常はマイクロ秒になります。
1 select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' )
2* from dual
SQL> /
SYSTIMESTAMP-TO_TIMESTAMP('2012-07-23','YYYY-MM-DD')
---------------------------------------------------------------------------
+000000000 14:51:04.339000000
EXTRACT
を使用できます INTERVAL DAY TO SECOND
の個々の要素を抽出する関数
SQL> ed
Wrote file afiedt.buf
1 select extract( day from diff ) days,
2 extract( hour from diff ) hours,
3 extract( minute from diff ) minutes,
4 extract( second from diff ) seconds
5 from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
6* from dual)
SQL> /
DAYS HOURS MINUTES SECONDS
---------- ---------- ---------- ----------
0 14 55 37.936
次に、これらの各コンポーネントをミリ秒に変換して合計します
SQL> ed
Wrote file afiedt.buf
1 select extract( day from diff )*24*60*60*1000 +
2 extract( hour from diff )*60*60*1000 +
3 extract( minute from diff )*60*1000 +
4 round(extract( second from diff )*1000) total_milliseconds
5 from (select systimestamp - to_timestamp( '2012-07-23', 'yyyy-mm-dd' ) diff
6* from dual)
SQL> /
TOTAL_MILLISECONDS
------------------
53831842
ただし、通常は、INTERVAL DAY TO SECOND
のいずれかを使用する方が便利です。 2つのTIMESTAMP
間の合計ミリ秒数を計算するのではなく、表現するか、時間、分、秒などの列を分離します。 値。