정보

[Oracle SQL] 초를 분, 시간, 일로 변환하는 방법 완벽 정리

mindlab091908 2025. 5. 7. 22:51
반응형

 

Oracle SQL을 사용하다 보면 시간 단위의 데이터를 분이나 초, 또는 일 단위로 변환해야 할 때가 많습니다. 특히 서버 로그, 트랜잭션 처리 시간, 사용자 접속 시간 등 다양한 시스템 데이터에서 초 단위로 측정된 값을 사람이 이해하기 쉬운 단위로 바꿔야 하는 경우가 자주 발생하죠.

이번 포스팅에서는 오라클 SQL에서 **초(Second)**를 기준으로 **분(Minute), 시간(Hour), 일(Day)**로 변환하는 방법을 아주 쉽게 설명드리겠습니다. 실제 예제와 함께 응용 가능한 실무 팁도 함께 제공드리니, 끝까지 읽어보시면 시간 처리에 대한 감을 확실히 잡으실 수 있을 것입니다.


🔧 1. 오라클에서 초를 분, 시간, 일로 변환하는 기본 개념

오라클 SQL에서 시간 관련 단위를 직접 계산하기 위해서는 초 단위 기준으로 단순한 산술 연산을 사용하는 것이 일반적입니다.

다음과 같은 상식적인 시간 계산이 바탕이 됩니다:

  • 1분 = 60초
  • 1시간 = 60분 × 60초 = 3,600초
  • 1일 = 24시간 × 60분 × 60초 = 86,400초

즉, 초를 60으로 나누면 분, 3,600으로 나누면 시간, 86,400으로 나누면 일 단위로 환산할 수 있습니다.

이를 바탕으로 SQL 쿼리를 구성해보면 다음과 같습니다.

SELECT 86400                     AS seconds -- 초
     , FLOOR(86400 / 60)         AS minutes -- 분
     , FLOOR(86400 / (60*60))    AS hours   -- 시간
     , FLOOR(86400 / (24*60*60)) AS days    -- 일
  FROM dual;

이 쿼리의 결과는 다음과 같습니다:

seconds minutes hours days

86400 1440 24 1

위 쿼리에서는 FLOOR 함수를 사용해 소수점을 버리고 정수 값만 가져왔습니다. 이 방법은 데이터 전환 시 흔히 쓰이며, 예측 가능한 결과를 얻기 위한 실무적 필수 테크닉이기도 합니다.


🔍 2. FLOOR 함수란 무엇인가?

FLOOR() 함수는 소수점 이하 값을 모두 버리고 정수 부분만 남겨주는 함수입니다.

예를 들어:

SELECT FLOOR(5.9) FROM dual; -- 결과: 5

FLOOR(86400 / 60) 이라면 86400 ÷ 60 = 1440.0이 되는데, 여기서 .0을 제외하고 1440만 반환하게 됩니다.

시간 단위를 변환할 때 정수 단위로만 필요할 경우 매우 유용하게 쓰이죠.


🧠 3. 실무에서 자주 쓰는 초 변환 공식

다음은 자주 활용하는 공식들을 정리한 것입니다:

변환 대상 공식

초 → 분 FLOOR(초 / 60)
초 → 시간 FLOOR(초 / (60 * 60))
초 → 일 FLOOR(초 / (24 * 60 * 60))

각 공식을 기억해두면 SQL 스크립트를 빠르게 작성할 수 있고, 시간 데이터를 다양한 관점에서 분석하는 데 큰 도움이 됩니다.


🧪 4. 실전 응용 예제: SYSDATE 기준 현재 시각 초 단위로 변환

이번에는 Oracle의 SYSDATE를 활용한 실제 시간 변환 응용 쿼리를 살펴보겠습니다.

SELECT SYSDATE
     , TO_CHAR(SYSDATE, 'SSSSS') AS sssss
     , FLOOR(TO_CHAR(SYSDATE, 'SSSSS') / 60) AS minutes
     , FLOOR(TO_CHAR(SYSDATE, 'SSSSS') / (60*60)) AS hours 
     , TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, 'SSSSS'), 'SSSSS'), 'HH24:MI:SS') AS times
  FROM dual;

👀 쿼리 설명

  • TO_CHAR(SYSDATE, 'SSSSS') : 자정(00:00:00) 이후 현재 시각까지의 경과 시간을 초 단위로 반환합니다.
  • FLOOR(...) : 위에서 설명한 방식으로 분/시간 단위로 변환합니다.
  • TO_DATE(..., 'SSSSS') + TO_CHAR(..., 'HH24:MI:SS') : 초 값을 다시 시:분:초 형식의 시간으로 변환합니다.

예시 결과 (오전 11시 35분 13초 기준):

SYSDATE SSSSS MINUTES HOURS TIMES

2024/08/26 11:35:13 41713 695 11 11:35:13

해당 결과는 00:00:00부터 약 41,713초가 경과했으며, 이는 695분 또는 11시간 정도에 해당한다는 뜻입니다.


🔄 5. 시간 단위 데이터를 활용한 실무 활용 시나리오

초 → 분, 시간, 일 단위 변환은 다음과 같은 실무 상황에서 매우 유용하게 쓰입니다:

  • 로그 분석: 사용자의 접속 시간이나 페이지 머문 시간을 분 단위로 변환.
  • 서버 모니터링: 시스템 가동 시간이나 처리 시간의 통계적 분석.
  • 경과 시간 측정: 특정 작업 처리에 걸린 초 단위 데이터를 직관적으로 표현.
  • 보고서 작성: 초 단위를 그대로 출력하면 이해하기 어렵기 때문에 사람이 읽기 쉬운 단위로 환산.

예를 들어, 특정 테이블에서 START_TIME, END_TIME이 DATE 타입으로 저장돼 있을 때, 두 시간 차이를 초 단위로 구하고 다시 시간/분 단위로 바꿀 수도 있습니다:

SELECT (END_TIME - START_TIME) * 24 * 60 * 60 AS elapsed_seconds,
       FLOOR((END_TIME - START_TIME) * 24 * 60) AS elapsed_minutes
  FROM 작업_로그;

✅ 마무리 요약

항목 설명

기본 시간 단위 1분=60초, 1시간=3600초, 1일=86400초
사용 함수 FLOOR(), TO_CHAR(..., 'SSSSS'), TO_DATE(..., 'SSSSS')
응용 방법 초 → 분/시간/일 변환, 로그 분석, 경과 시간 계산 등
주의사항 FLOOR로 소수점 제거, 정수만 필요할 경우만 사용

💬 마치며

시간 데이터는 단순히 저장되는 값이 아닌, 분석과 통찰의 열쇠가 되는 중요한 정보입니다. Oracle SQL에서 초를 다양한 시간 단위로 바꾸는 방법은 단순하지만 실무에서 반드시 알아야 할 핵심입니다.

이 포스팅을 통해 초 → 분/시간/일 변환 방법을 명확하게 이해하셨다면, 여러분의 SQL 스킬은 한층 더 업그레이드된 것입니다. 데이터 처리의 정확성과 효율성을 동시에 잡기 위해, 이번 내용을 실무에 꼭 적용해보시길 바랍니다.

 

반응형