ROUNDとは、数値(NUMBER)や日時(DATE)を丸めるSQL関数である。丸めは絶対値が大きい方向へ行われる。つまり、正の数は大きく、負の数は小さくなる。
DBMS | ROUND |
---|---|
MySQL | ✓ |
Oracle | ✓ |
PostgreSQL | ✓ |
SQL Server | ✓ |
数値の小数点以下を丸めた整数を返す。
ROUND(number)
指定した小数点以下の桁数で丸めた数値を返す。
ROUND(number, scale)
値を丸める数値を指定する。
丸める位置を小数点以下の桁数で指定する。
引数に日付を指定した場合は、11時59分59秒までは当日の日付を返し、12時00分00秒以降は翌日の日付を返す。
ROUND(date)
ROUND(date, scale)
値を丸める日付をDATE型で指定する。
丸める位置を書式モデルで指定する。
書式 | 説明 |
---|---|
YEAR | 年(7月1日以降は翌年に切り上げ) |
MONTH | 月(16日以降は翌月に切り上げ) |
DD | 日 |
HH | 時 |
MM | 分 |
小数点以下を丸めて四捨五入する例を示す。
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>
丸め(端数処理)に関しては、ROUND以外にも次表に示すSQL関数がある。
SQL関数 | 説明 |
---|---|
CEIL | 指定した数値以上の最小の整数を返す。 |
FLOOR | 指定した数値以下の最大の整数を返す。 |
TRUNC | 数値や日付を切り捨てた値を返す。 |