SQL ROUND 関数

ROUNDとは、数値(NUMBER)や日時(DATE)を丸めるSQL関数である。丸めは絶対値が大きい方向へ行われる。つまり、正の数は大きく、負の数は小さくなる。

ROUND
DBMS ROUND
MySQL
Oracle
PostgreSQL
SQL Server

ROUNDの構文

数値の小数点以下を丸めた整数を返す。

ROUND(number)

指定した小数点以下の桁数で丸めた数値を返す。

ROUND(number, scale)
number

値を丸める数値を指定する。

scale

丸める位置を小数点以下の桁数で指定する。

引数に日付を指定した場合は、11時59分59秒までは当日の日付を返し、12時00分00秒以降は翌日の日付を返す。

ROUND(date)
ROUND(date, scale)
date

値を丸める日付をDATE型で指定する。

scale

丸める位置を書式モデルで指定する。

書式説明
YEAR年(7月1日以降は翌年に切り上げ)
MONTH月(16日以降は翌月に切り上げ)
DD
HH
MM

ROUNDの使用例

小数点以下を丸めて四捨五入する例を示す。

SQL> SELECT ROUND(2.5) FROM DUAL;

ROUND(2.5)
----------
       3

SQL> SELECT ROUND(-2.5) FROM DUAL;

ROUND(-2.5)
-----------
       -3

SQL>

丸める桁の位置を指定して四捨五入する例を示す。

SQL> SELECT ROUND(123.456, 0) FROM DUAL;

ROUND(123.456,0)
----------------
           123

SQL> SELECT ROUND(123.456, 1) FROM DUAL;

ROUND(123.456,1)
----------------
         123.5

SQL> SELECT ROUND(123.456, 2) FROM DUAL;

ROUND(123.456,2)
----------------
        123.46

SQL> SELECT ROUND(123.456, -1) FROM DUAL;

ROUND(123.456,-1)
-----------------
            120

SQL> SELECT ROUND(123.456, -2) FROM DUAL;

ROUND(123.456,-2)
-----------------
            100

SQL>

日付を丸める例を示す。

SQL> SELECT ROUND(TO_DATE('2016/09/30 11:59:59', 'YYYY/MM/DD HH23:MI:SS')) FROM DUAL;

ROUND(TO
--------
16-09-30

SQL> SELECT ROUND(TO_DATE('2016/09/30 12:00:00', 'YYYY/MM/DD HH23:MI:SS')) FROM DUAL;

ROUND(TO
--------
16-10-01

SQL>

丸める位置を指定して日付を丸める例を示す。

SQL> SELECT ROUND(TO_DATE('2016/06/30'), 'YEAR') FROM DUAL;

ROUND(TO
--------
16-01-01

SQL> SELECT ROUND(TO_DATE('2016/07/01'), 'YEAR') FROM DUAL;

ROUND(TO
--------
17-01-01

SQL>

関連SQL関数

丸め(端数処理)に関しては、ROUND以外にも次表に示すSQL関数がある。

丸め(端数処理)に関するSQL関数
SQL関数 説明
CEIL 指定した数値以上の最小の整数を返す。
FLOOR 指定した数値以下の最大の整数を返す。
TRUNC 数値や日付を切り捨てた値を返す。