DataBase/Oracle

[ORACLE]반올림하는 ROUND 함수

DevStory 2021. 5. 16.

ROUND Function

ROUND (number [, Integer])

숫자를 지정된 소수 자릿수로 반올림하는 함수입니다.

날짜 형식에도 사용이 되며, 날짜를 Format 형식으로 반올림합니다.


숫자형

ROUND (number [, Integer])

소수점을 중심으로 오른쪽의 Interger의 자리 수를 반올림합니다.

number가 양수이면 아래 공식이 성립합니다.

ROUND (number, integer) = FLOOR (number * POWER (10, integer) + 0.5) * POWER (10, -integer)

 

매개변수

number

- 반올림되는 숫자 값입니다.

 

Integer

- number을 반올림할 소수점 이하 자릿수입니다.

- 생략되면 number는 소수점 1번째 위치에서 반올림됩니다.

- 자를 소수점 이하 자릿수입니다.

- 양수이면 오른쪽 자릿수가 잘리고 음수이면 왼쪽 자릿수가 잘립니다.


Example Data

EX 1) 정상적으로 사용했을 경우

WITH TEMP AS ( 
    SELECT 1234.5678 AS COL 
      FROM DUAL 
) 
SELECT COL 
     , ROUND(COL)     -- 1번째 위치에서 반올림 ROUND(COL, 0)와 동일함
     , ROUND(COL, 1)  -- 1번째 위치에서 반올림
     , ROUND(COL, 2)  -- 2번째 위치에서 반올림
     , ROUND(COL,-1)  -- 정수 1번째 위치에서 반올림
     , ROUND(COL,-2)  -- 정수 2번째 위치에서 반올림
  FROM TEMP;
  


EX 2) 자릿수 범위 초과

WITH TEMP AS ( 
    SELECT 1234.5678 AS COL 
      FROM DUAL 
) 
SELECT COL 
     , ROUND(COL, 5)  -- 자릿수 범위 초과 ROUND(1234.56780)와 동일함
     , ROUND(COL,-5)  -- 자릿수 범위 초과 ROUND(01234.5678 -5)와 동일함
  FROM TEMP;
  

 


날짜형

ROUND(date [, format])

특정 측정 단위(format)로 반올림된 날짜를 반환합니다.

 

매개변수

date

- 반올림 되는 날짜 값입니다.

 

format

- 지정되지 않은 경우 가장 가까운 날짜로 반올림 합니다.

반올림하기 위해 적용할 Format 형식입니다.

단위 Format 형식
Year SYYYY, YYYY, YEAR, SYEAR, YYY, YY, Y
ISO Year IYYY, IY, I
Quarter Q
Month MONTH, MON, MM, RM
Week WW
Week Number IW
Week W
Day DDD, DD, J
Start day of the week DAY, DY, D
Hour HH, HH12, HH24
Minute MI

[날짜 ROUND에 사용 가능한 Format]


Example Data

EX 1) 가장 가까운 날짜로 반올림

- 16일에서 가장 가까운 날짜인 17일로 반올림되었습니다.

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(ROUND( SYSDATE ), 'YYYY-MM-DD HH24:MI:SS') AS COL
FROM DUAL;


EX 2) 다음 달로 반올림

- 5월의 다음 달인 6월로 반올림되었습니다.

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(ROUND( SYSDATE, 'MONTH' ), 'YYYY-MM-DD HH24:MI:SS') AS MONTH_COL
FROM DUAL;


EX 3) 다음 연도로 반올림되지 않을 경우

- 2021년 5월 16일이 2021년의 절반이 지나지 않아서 반올림되지 않았습니다.

SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(ROUND( SYSDATE, 'YEAR' ), 'YYYY-MM-DD HH24:MI:SS') AS YEAR_COL
FROM DUAL;

반응형

댓글