Oracle データベースで計算されたタイムスタンプ間のミリ秒の差
Oracle データベース内の 2 つのタイムスタンプ間のミリ秒の差を計算するには、プラットフォーム固有のニュアンスと必要な出力形式を注意深く考慮する必要があります。
2 つの TIMESTAMP 変数を減算すると、結果は INTERVAL DAY TO SECOND 値になります。この間隔には、データベースで使用されているオペレーティング システムに応じて、異なるミリ秒やマイクロ秒の数値が含まれます。たとえば、Windows ベースのデータベースは通常ミリ秒を提供しますが、Unix ベースのデータベースはマイクロ秒を使用する傾向があります。
時間コンポーネントを抽出
INTERVAL DAY TO SECOND 値から特定の時間コンポーネントを取得するには、EXTRACT 関数を使用できます。この機能を使用すると、日、時間、分、秒などの個々の要素を抽出できます。
合計ミリ秒を計算します
タイムスタンプ間の合計ミリ秒数が必要な場合は、抽出された各コンポーネントをミリ秒に変換して合計できます。ただし、多くの場合、INTERVAL DAY TO SECOND 表現を維持するか、時間、分、秒ごとに異なる列を作成する方が現実的です。
計算例:
次の例を考えてみましょう:
<code class="language-sql">select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') from dual;</code>
このクエリは、時差を INTERVAL DAY TO SECOND 値として取得します:
<code>+000000000 14:51:04.339000000</code>
EXTRACT 関数を使用すると、日、時間、分、秒の要素を抽出できます。
<code class="language-sql">select extract(day from diff) days, extract(hour from diff) hours, extract(minute from diff) minutes, extract(second from diff) seconds from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff from dual);</code>
結果は次のとおりです:
<code> DAYS HOURS MINUTES SECONDS ---------- ---------- ---------- ---------- 0 14 55 37.936</code>
合計ミリ秒を計算するには、次のコンポーネントを組み合わせます:
<code class="language-sql">select extract(day from diff)*24*60*60*1000 + extract(hour from diff)*60*60*1000 + extract(minute from diff)*60*1000 + round(extract(second from diff)*1000) total_milliseconds from (select systimestamp - to_timestamp('2012-07-23', 'yyyy-mm-dd') diff from dual);</code>
返される結果:
<code>TOTAL_MILLISECONDS ------------------ 53831842</code>
以上がOracle でタイムスタンプ間のミリ秒の差を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。