간단한 초보 오라클 쿼리 입니다 조금만 알려주셧스면 합니다. 0 1 1,319

by 오라쟁이 [Oracle 기초] [2012.07.06 16:40:28]



2012-07-05 17:45:00 - 2010-10-13 07:24:52 = 1년 8월 22일 10시 20분 8초

이렇게 나와야 됩니다. 처음 날짜에서 다음날짜를 빼서 결과값 형식에 맞개 나와야 하는데 ;; 어렵네요

select
trunc( months_between( TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS'), TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS') ) / 12 ) || '년'
,mod( trunc( months_between( TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS'), TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS') ) ), 12 ) || '월'
,trunc(TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS') - add_months(TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS'),trunc( months_between( TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS'), TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS') ) ))) || '일' 
,trunc( mod( (TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS'))*24, 24 ) ) || '시'
,trunc( mod( (TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS'))*24*60, 60 ) ) || '분'
,trunc( mod( (TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS')-TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS'))*24*60*60, 60 ) ) || '초'
from dual

저도 웹에서 찾으면서 해보았지만 너무 길게 되구 이게 아니라고 하네요  너무 답답합니다  조금만 도와주세요 ~

다른방법이 있거나 쿼리를 줄일수 있는 방법점 알려주세요 ~
by 손님 [2012.07.06 17:11:06]
WITH TEST AS
(
SELECT TO_DATE('2012-07-05 17:45:00','YYYY-MM-DD HH24:MI:SS') EDT,
    TO_DATE('2010-10-13 07:24:52','YYYY-MM-DD HH24:MI:SS') SDT
FROM DUAL
)
SELECT YEARS,
    MONTHS,
    FLOOR(EDT - ADD_MONTHS(SDT,YEARS*12+MONTHS)) DAYS,
    TO_CHAR(TO_DATE(FLOOR(MOD(EDT - ADD_MONTHS(SDT,YEARS*12+MONTHS),1)*86400),'SSSSS'),'HH24:MI:SS') YMD
FROM (
SELECT EDT,
    SDT,
    FLOOR(MONTHS_BETWEEN(EDT,SDT)/12) YEARS,
    FLOOR(MOD(MONTHS_BETWEEN(EDT,SDT),12)) MONTHS
FROM TEST
)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입