我需要选择一个在不同实体的有效性范围内有效的实体。
作为一个简化的例子,我想做这样的事情:
select
*
from
o1, o2
where
o1.from < (o2.to - ((o2.to - o2.from) /2) )
and
o1.to > (o2.to - ((o2.to - o2.from) /2) )
如何在SQL中计算“(o2.to - ((o2.to - o2.from)/ 2))”,假设往返是时间戳?
答案 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