2012-02-28 98 views
4

我必須做一個「選擇」,它返回數據庫中日期類型的字段與當前日期之間的差異(以小時爲單位)。我如何在oracle中執行此操作?如何獲得兩個日期之間的差異?

我試試這個:

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; 

如果日期的格式是錯誤的,你可以使用可能兩個步驟,如:

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中減去兩個不同的日期,則每天返回1,並且每小時返回1/24 – 2012-02-28 19:54:31

+0

您應該乘以24以獲得日期差異的小時數。 – 2017-04-19 15:14:28