이리저리 찾다가 가장 심플한거 같아서 챙겼지요...
1. SELECT (dd*24)+SUBSTR (hms, 1, 2)|| '.'|| SUBSTR (hms, 3, 2)|| '분'|| SUBSTR (hms, 5, 2)|| '초' day 2. SELECT dd|| '일'|| SUBSTR (hms, 1, 2)|| '시'|| SUBSTR (hms, 3, 2)|| '분'|| SUBSTR (hms, 5, 2)|| '초' day FROM ( SELECT TRUNC (end_date - start_date) dd, TO_CHAR (TO_DATE (TRUNC ( MOD(end_date - start_date, 1) * 24 * 60 * 60), 'sssss'), 'hh24miss') hms FROM ( SELECT TO_DATE ('2006-06-20 09:07:34', 'yyyy-mm-dd hh24:mi:ss') end_date, TO_DATE ('2006-06-18 14:45:30', 'yyyy-mm-dd hh24:mi:ss') start_date FROM DUAL ) )1.결과 : 42.22분03초
2.결과 : 1일18시22분03초
* 포스팅 시점엔 상기의 쿼리를 어디서 참고했는지 떠오르지 않았는데 오늘 문득 sql관련하여 주로 방문하는 사이트에서 관련 쿼리를 찾았다. 이에 밝힌다.
관련 출처 : 쏘쿨(http://www.soqool.com)
* 두 날짜 사이의 시간 차이를 구하는 쿼리에서
일반적으로 알려진 쿼리를 사용하는 경우 날짜에 따라 반올림 관계로 결과가 다르게 나오는 경우가 있음.
TIMESTAMP를 사용하면 정확한 시간을 구하는 것이 가능하다.
SELECT SUBSTR(T_TERM,2,9) * 24 + SUBSTR(T_TERM,12,2) || SUBSTR(T_TERM,14,3) TIME_TERM FROM ( SELECT TO_CHAR(TO_TIMESTAMP(END_DATE,'YYYYMMDDHH24MISS') - TO_TIMESTAMP(START_DATE,'YYYYMMDDHH24MISS')) T_TERM FROM ( SELECT :END_DATE AS END_DATE, :START_DATE AS START_DATE FROM DUAL ) )
댓글 없음:
댓글 쓰기