2012-02-28 25 views
4

データベースからのタイプ日付フィールドと現在の日付との差を返す「選択」を行う必要があります。どのように私はこれをオラクルで行うことができますか?どのようにして2つの日付間の時間差を得ることができますか?

私はこれを試してみてください。

select 24 * (to_date(sysdate, 'YYYY-MM-DD hh24:mi') 
     - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) diff_hours 
    from dual; 

しかし、それは動作しませんでした。

答えて

10

SYSDATEはすでに日付であるためエラーです。TO_DATE()を使用して日付に変換する必要はありません。

日付に変換していない場合は、次の

select 
    24 * (sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours 
from dual; 

や日付のフォーマットが間違っている場合は、次のような2段階の可能な使用をすることができます:

select 
    24 * (to_date(to_char(sysdate, 'YYYY-MM-DD hh24:mi'), 'YYYY-MM-DD hh24:mi') - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi')) as diff_hours 
from dual; 
0
select trunc((sysdate - to_date('2012-02-28 15:20', 'YYYY-MM-DD hh24:mi'))/24) 
    from dual; 
+0

Oracleで2つの異なる日付を減算すると、1日に1回、1時間に24時間返されます。 –

+0

日付差から時間を取得するには、24を掛けてください。 –

関連する問題