2009-05-13 14 views
0

異なるエンティティの妥当性の幅で有効なエンティティを選択する必要があります。Oracleタイムスタンプ(SQL)で算術演算を実行する方法は?

簡略化した例として、私はこのような何かやりたい:

select 
    * 
from 
    o1, o2 
where 
    o1.from < (o2.to - ((o2.to - o2.from) /2)) 
    and 
    o1.to > (o2.to - ((o2.to - o2.from) /2)) 

どうやって計算することができます "(o2.to - ((o2.to - o2.from)/ 2))" でSQLは、toとfromがタイムスタンプであると仮定していますか?

+0

私は地元のバージョンでいくつかタイプミスをしています。 –

答えて

2

あなたが書いたものを試しましたか?それは私には動作するはずのように見えます:

(o2.to - o2.from) 

これは例えば、あなたの部分の日差を与える:

1 select (trunc(sysdate) - trunc(sysdate+1))/2 from dual 
    2* 
SQL>/

(TRUNC(SYSDATE)-TRUNC(SYSDATE+1))/2 
----------------------------------- 
           -.5 

SQL> 

あなたは元の日付にその結果を追加した場合次に、あなたは日付を取得します中点での時間:

SQL> select to_char(a.d, 'YYYY-MON-DD HH24:MI') 
    2 from 
    3 ( select trunc(sysdate) + (trunc(sysdate+1) - trunc(sysdate))/2 d from dual 
    4 ) a; 

TO_CHAR(A.D,'YYYY 
----------------- 
2009-MAY-13 12:00 
関連する問題