다음과 같은 테이블이 있습니다.
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;