2017-10-30 11 views
0

두 시간 소인의 차이를 계산합니다. 차이가 48 시간을 넘으면 어떻게 든 작동하지 않습니다. 계산 타임 스탬프 차이 - 48 시간을 초과하여 작동하지 않습니다.

내 코드입니다 : select systimestamp, mystoredtimestamp, extract(hour from diff) || ' hours ' || extract(minute from diff) || ' minutes' from (select (systimestamp - mystoredtimestamp)) diff from dual)

출력은

1. systimestamp: 30-OCT-17 11.48.43.783572 AM +00:00, 
2. mystoredtimestamp: 27-OCT-17 07.30.36.956687 AM, 
3. difference: 4 hours 18 minutes 

(어떻게 든이 인하 번호가 렌더링되지 않는, 위의 쿼리의 세 가지 다른 열 수 있습니다)

mystoredtimestamp는 TIMESTAMP(6) WITH LOCAL TIME ZONE 데이터 형식입니다. 문제의 원인은 무엇입니까? 그렇다면 어떻게 해결할 수 있습니까?

답변

1

일도 추출해야합니다. 자동으로 시간으로 변환되지는 않습니다.

3 days 2 hours 26 minutes 

당신이 시간에 24을 곱과 일을 추가하려면

SELECT 
    extract (DAY FROM diff) 
    || ' days ' 
    ||extract(hour FROM diff) 
    || ' hours ' 
    || extract(minute FROM diff) 
    || ' minutes' 
FROM 
    (
    SELECT 
     systimestamp - CAST ('27-OCT-17 07.30.36.956687 AM' AS TIMESTAMP(6) 
     WITH LOCAL TIME ZONE) diff 
    FROM 
     DUAL 
); 

O/P.

SELECT 
    24 * extract (DAY FROM diff) 
    + 
extract(hour FROM diff) 
    || ' hours ' 
    || extract(minute FROM diff) 
    || ' minutes' 
FROM 
    (
    SELECT 
     systimestamp - CAST ('27-OCT-17 07.30.36.956687 AM' AS TIMESTAMP(6) 
     WITH LOCAL TIME ZONE) diff 
    FROM 
     DUAL 
); 

O/P

74 hours 28 minutes 
+0

감사합니다. 나는 일을 그리워했다. –