개발 지식/[DBMS] Oracle

[Oracle] 날짜 관련 함수(5) - ROUND(), TRUNC() (feat. 날짜 데이터)

devGSP 2022. 5. 10. 08:00
반응형
이 게시물은 Database GUI Oracle SQL Developer의 아래 버전 정보를 기준으로 작성되었습니다.

Java(TM) 플랫폼 : 1.8.0_321
Oracle IDE : 4.1.5.21.78

 

설명

ROUND(), TRUNC()는 숫자 데이터의 반올림, 버림 처리 외에 날짜 데이터에도 사용할 수 있다.

소수점 위치 정보가 아닌 기준 포맷값을 지정해 줌을 참고할 것.

 

[기준 포맷값]

CC, SCC : 네 자리 연도의 끝 두자리를 기준으로 사용
→ 2016년이면 2050년 기준. 반올림할 경우 2001년으로 처리
SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y : 날짜 데이터의 해당 연, 월, 일의 7월 1일을 기준
→ 2016년 7월 1일일 경우, 2017년으로 처리
IYYY, IYY, IY, I : ISO 8601에서 제정한 날짜 기준년도 포맷을 기준
Q : 각 분기의 두 번째 달의 16일 기준
MONTH, MON, MM, RM : 각 달의 16일 기준
WW : 해당 연도의 몇 주(1~53번째 주)를 기준
IW : ISO 8601에서 제정한 날짜 기준 해당 연도의 주(WEEK)를 기준
W : 해당 월의 주(1~5번째 주)를 기준
DDD, DD, J : 해당 일의 정오(12:00:00)를 기준
DAY, DY, D : 한 주가 시작되는 날짜를 기준
HH, HH12, HH24 : 해당 일의 시간을 기준
MI : 해당 일 시간의 분을 기준

 

예제 확인 전 아래 쿼리를 실행

SELECT SYSDATE
  FROM DUAL;

만약 결과값이 아래처럼 나온다면

df5_q1

시/분/초가 보이지 않아 설정한 포맷값에 따른 변화를 확인할 수 없다. 사용하는 프로그램에서 출력 포맷을 변경해 주자.

SQL Developer에서는

도구 - 환경설정 - 데이터베이스 - NLS

'날짜 형식'을 'RR/MM/DD HH24:MI:SS'으로 변경

 

<변경 후 결과값>

df5_q2

 

문법

ROUND(날짜 데이터(필수), 반올림 기준 포맷(선택, Default는 'DDD'로 추정))
TRUNC(날짜 데이터(필수), 버림 기준 포맷(선택, Default는 'DDD'로 추정))

 

사용 예시

-- ROUND query
SELECT SYSDATE
     , ROUND(SYSDATE, 'CC') AS FORMAT_CC
     , ROUND(SYSDATE, 'YYYY') AS FORMAT_YYYY
     , ROUND(SYSDATE, 'Q') AS FORMAT_Q
     , ROUND(SYSDATE, 'DDD') AS FORMAT_DDD
     , ROUND(SYSDATE, 'HH') AS FORMAT_HH
     , ROUND(SYSDATE) AS FORMAT_NONE
  FROM DUAL;
  
-- TRUNC query
SELECT SYSDATE
     , TRUNC(SYSDATE, 'CC') AS FORMAT_CC
     , TRUNC(SYSDATE, 'YYYY') AS FORMAT_YYYY
     , TRUNC(SYSDATE, 'Q') AS FORMAT_Q
     , TRUNC(SYSDATE, 'DDD') AS FORMAT_DDD
     , TRUNC(SYSDATE, 'HH') AS FORMAT_HH
     , TRUNC(SYSDATE) AS FORMAT_NONE
  FROM DUAL;

 

결과

-- ROUND query

df5_q3

 

-- TRUNC query

df5_q4

 

반응형