[oracle] Oracle SQL에서 두 날짜 / 시간의 차이 계산

다음과 같은 테이블이 있습니다.

Filename - varchar
Creation Date - Date format dd/mm/yyyy hh24:mi:ss
Oldest cdr date - Date format dd/mm/yyyy hh24:mi:ss

Oracle SQL에서 두 날짜 사이의 시간 (분)과 초 (일)의 차이를 어떻게 계산할 수 있습니까?

감사



답변

Oracle에서 날짜를 뺄 수 있습니다. 이것은 당신에게 일의 차이를 줄 것입니다. 시간을 얻으려면 24를 곱하는 식입니다.

SQL> select oldest - creation from my_table;

날짜가 문자 데이터로 저장되어있는 경우 먼저 날짜 유형으로 변환해야합니다.

SQL> select 24 * (to_date('2009-07-07 22:00', 'YYYY-MM-DD hh24:mi')
             - to_date('2009-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_hours
       from dual;

DIFF_HOURS
----------
       2.5

참고 :

이 대답은 Oracle 데이터 유형이 나타내는 날짜에 적용됩니다 DATE. Oracle TIMESTAMP에는 날짜 (시간 포함)를 나타낼 수도 있는 데이터 유형 도 있습니다. TIMESTAMP값 을 빼면 INTERVAL; 숫자 값을 추출하려면 EXTRACT함수를 사용하십시오 .


답변

몇 초 안에 결과를 얻으려면 :

select (END_DT - START_DT)*60*60*24 from MY_TABLE;

확인 [ https://community.oracle.com/thread/2145099?tstart=0][1]


답변

declare
strTime1 varchar2(50) := '02/08/2013 01:09:42 PM';
strTime2 varchar2(50) := '02/08/2013 11:09:00 PM';
v_date1 date := to_date(strTime1,'DD/MM/YYYY HH:MI:SS PM');
v_date2 date := to_date(strTime2,'DD/MM/YYYY HH:MI:SS PM');
difrence_In_Hours number;
difrence_In_minutes number;
difrence_In_seconds number;
begin
    difrence_In_Hours   := (v_date2 - v_date1) * 24;
    difrence_In_minutes := difrence_In_Hours * 60;
    difrence_In_seconds := difrence_In_minutes * 60;

    dbms_output.put_line(strTime1);
    dbms_output.put_line(strTime2);
    dbms_output.put_line('*******');
    dbms_output.put_line('difrence_In_Hours  : ' || difrence_In_Hours);
    dbms_output.put_line('difrence_In_minutes: ' || difrence_In_minutes);
    dbms_output.put_line('difrence_In_seconds: ' || difrence_In_seconds);
end ;

도움이 되었기를 바랍니다.


답변

select
    extract( day from diff ) Days,
    extract( hour from diff ) Hours,
    extract( minute from diff ) Minutes
from (
        select (CAST(creationdate as timestamp) - CAST(oldcreationdate as timestamp)) diff
        from [TableName]
     );

이렇게하면 일, 시간 및 분으로 세 개의 열이 제공됩니다.


답변

다음을 시도해 볼 수도 있습니다.

select to_char(to_date('1970-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss')+(end_date - start_date),'hh24:mi:ss')
       as run_time from some_table;

00:01:34와 같이 사람이 읽을 수있는 형식으로 시간을 표시합니다. 날짜도 필요하면 마지막 형식화 문자열에 DD를 추가하면됩니다.


답변

to_timestamp 함수를 사용하여 날짜를 타임 스탬프로 변환하고 빼기 연산을 수행 할 수 있습니다.

다음과 같은 것 :

SELECT
TO_TIMESTAMP ('13.10.1990 00:00:00','DD.MM.YYYY HH24:MI:SS')  -
TO_TIMESTAMP ('01.01.1990:00:10:00','DD.MM.YYYY:HH24:MI:SS')
FROM DUAL


답변

컴퓨터의 HIREDATE부터 시스템 날짜까지의 연령 계산

SELECT HIREDATE||'        '||SYSDATE||'       ' ||
TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12) ||' YEARS '||
TRUNC((MONTHS_BETWEEN(SYSDATE,HIREDATE))-(TRUNC(MONTHS_BETWEEN(SYSDATE,HIREDATE)/12)*12))||
'MONTHS' AS "AGE  "  FROM EMP;