2014-02-27 45 views
2

我有一張表,有2列,EXECUTION_TIMESTAMP,EFFECTIVE_DATE爲日期。Oracle中的分數天差

我希望兩個列之間的差異表示爲分數日。例如1.5天。

以下是唯一的方法嗎?當然必須有更好的方法?

select EXECUTION_TIMESTAMP - EFFECTIVE_DATE, 
     extract(day from (EXECUTION_TIMESTAMP - EFFECTIVE_DATE)) 
     +(extract(hour from (EXECUTION_TIMESTAMP - EFFECTIVE_DATE)))/24 
     +extract(minute from (EXECUTION_TIMESTAMP - EFFECTIVE_DATE))/1400 
     +extract(second from (EXECUTION_TIMESTAMP - EFFECTIVE_DATE))/86400 
from a_table 
+2

從a_table選擇EXECUTION_TIMESTAMP - EFFECTIVE_DATE有什麼問題;? – user272735

+1

簡單'EXECUTION_TIMESTAMP - EFFECTIVE_DATE'就夠了。它給你在兩個日期之間的天差異。而且,你對'extract()'函數的使用在語義上是不正確的。 'extract()'函數希望將datetime或interval作爲你從中提取的值,而不是數值。 –

回答

1

儘量只減去一樣

SELECT sysdate - (sysdate -dbms_random.value(1,10)) FROM dual; 
0

這個例子來看看這兩個值:

SELECT ROUND(to_date('02/26/2014 05:00:15 PM','MM/DD/YYYY HH:MI:SS AM') - 
      to_date('02/25/2014 06:00:15 AM','MM/DD/YYYY HH:MI:SS AM'),1) Days 
FROM DUAL; 

它會給輸出1.5