2014-01-15 15 views
1

如何從兩個時間戳減去時間差(我需要集中精力只有時間diffeerence沒有日期)Calulating以分和秒

一個是attendedInTime等是plannedInTime,而這兩個時間都是時間戳。

我已經寫了下面的查詢它不工作的一些情況。

SELECT (
    TO_NUMBER(substr(to_Char(attendedintime,'DD.MM.YYYY:HH24:MI:SS'), 12, 2)) - 
    TO_NUMBER(substr(to_Char(plannedInTime, 'DD.MM.YYYY:HH24:MI:SS'), 12, 2)) 
) 
    || ':' || 
( 
    TO_NUMBER(substr(to_Char(attendedintime,'DD.MM.YYYY:HH24:MI:SS'), 15, 2)) - 
    TO_NUMBER(substr(to_Char(plannedInTime, 'DD.MM.YYYY:HH24:MI:SS'), 15, 2)) 
) AS difference FROM TABLENAME 

但是按照上面的查詢我不能夠syncup與小時和分鐘 (據calclating不同分鐘和小時)

+1

你可以請整理你的標籤?無論你想知道如何在Java中做到這一點,或者你想知道如何在Oracle/SQL中做到這一點。用三個標籤標記似乎都很貪婪。 –

+0

如果你想在Java中做到這一點,你可以看看[這個例子](https://stackoverflow.com/questions/18974729/how-to-get-the-time-since-midnight-in-秒/ 18975189#18975189) – MadProgrammer

+0

@David,我已經更新了我的問題以及標籤 – user3094295

回答

1

假設attendedInTime> plannedInTime:

select extract (hour from (attendedInTime - plannedInTime)) as HOUR_DIFF, 
     extract (minute from (attendedInTime - plannedInTime)) as MINUTE_DIFF, 
     extract (second from (attendedInTime - plannedInTime)) as SECOND_DIFF 
    from tab ; 
+0

我得到了這個錯誤ORA-30076:提取源30076的無效提取字段。00000 - 「提取源無效的提取字段」*原因:提取源不包含指定的提取字段 – user3094295

+0

qwery'select transferredInTime - tabs from scheduledInTime的結果是什麼?如果它是一個數字,那麼數據類型不是時間戳。 – San

+0

attendInTime,plannedInTime列數據類型爲數據庫中的Date。 在包含Date和Time的數據庫列值中。現在我試圖區分只有時間。 – user3094295