2017-01-03 19 views
0

Oracleの2つの日付の差を計算し、結果をTimeStampとして取得しようとしています。これはSQL Serverで行うのが最も簡単な作業ですが、Oracleにはこれを簡単に解決する方法はありません。私は、私が必要とするものを得るために多くのコードを書く必要があると信じることを拒否します。2つの日付の差とタイムスタンプの結果の取得

enddate = '2017-03-01 17:30:00' 
startdate = '2017-03-01 10:00:00' 

difference: 07:30:00 
+0

2つの日付の違い*はタイムスタンプではありません... *タイムスタンプ* 2001年1月1日と2005年2月3日の違いは何でしょうか? –

+0

「タイムスタンプ」とは、おそらくSQL Serverで何か異なることを意味します。 Oracleで定義されている概念では、要件自体は無意味です。 2つの日付の違いは数字です(日数で表されます)。 「日数」は、コードの書き方にかかわらず、タイムスタンプではありません。 – mathguy

+0

私はあなたの言うことを理解しています。しかし、私がしようとしていることを得るための簡単な方法はありますか?私の場合、終了日は常に開始日よりも大きい – NicoRiff

答えて

1

Substract二つの日付:私はなるようなものが結果を必要とすることの違い?:

SELECT TO_CHAR(EXTRACT(HOUR FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00') 
    || ':' || 
TO_CHAR(EXTRACT(MINUTE FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00') 
    || ':' || 
TO_CHAR(EXTRACT(SECOND FROM NUMTODSINTERVAL(enddate-startdate, 'DAY')), 'FM00') 

を取得する簡単な方法があれば、誰かが私を伝えることができます。結果を現在の日付に追加します(timeコンポーネント、trunc(sysdate)なし)。時間だけを表示します。

select to_char(trunc(sysdate) + (to_date('2017-03-01 17:30:00', 'YYYY-MM-DD HH24:MI:SS') - 
           to_date('2017-03-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS')) 
       ,'HH24:MI:SS') 
    from dual 
+0

違いが<24時間の場合にのみ動作します。 – Rene

関連する問題