Округление значения
Функция
Округление значения с заданной точностью.
Спецификация
::=
::=
::=
Синтаксические правила
-
< Выражение типа «дата-время» >
должно иметь тип DATE. -
< Точность >
задает точность округления целочисленного значения:-
при положительном значении – точность округления после десятичной точки (количество цифр после десятичной точки). Для целочисленных значений не используется;
-
при отрицательном значении – точность округления перед десятичной точкой, т.е. при «-1» – до ближайшего целого десятка («-2» – до сотни, «-3» тысячи и т.д.).
Примечание
При округлении до значения 1e-13 числа считаются равными.
-
-
< Элемент формата «дата-время» >
задает точность округления значения типа «дата-время» (до какого элемента даты-времени должно выполняться округление). -
Округление по году и месяцу имеет свою специфику, например,
select ROUND( sysdate, 'Y' );
возвращает вместе с годом и начальные день и месяц этого года:
|01.01.2005:00:00:00.00|
Для исключения начальных месяца и дня из «округляемого» года необходимо использовать конструкцию:
select to_char( ROUND( sysdate, 'Y' ), 'YYYY');
Аналогично для «округляемого» месяца:
select to_char( ROUND( sysdate, 'M' ), 'MM.YYYY');
-
Все позиции (после запятой), требуемые к заполнению символьным форматом второго аргумента и выходящие за пределы вычисленной точности, заполняются символом '0'.
Возвращаемое значение
-
< Выражение >
, округленное до заданной точности. -
Если
< числовое выражение >
не может быть округлено с заданной точностью перед десятичной точкой, то возвращается ноль (например, задано округление 45.67 до тысяч – round(45.67,-3)). -
Тип возвращаемого результата: для
< числового выражения >
DOUBLE, для< выражение типа «дата-время» >
DATE. -
Результат при указании
< элемента формата «дата-время» >
'D' зависит от наличия ключа /COMPATIBILITY=ORACLE в команде запуска ядра СУБД:-
значение DATE, округленное до текущего дня, если ключ не задан;
-
значение DATE, округленное до ближайшего дня начала недели, если ключ задан.
-
-
Результат при указании
< элемента формата «дата-время» >
'DY' или 'DAY' будет округлен до ближайшего дня начала недели. -
Если аргумент NULL, результат NULL.
Примеры
select round(453.9847,0), round(453.9847,2), round(453.9847,7), round(-453.9847,3); |454 |453.98 |453.9847 |-453.985 |
select round(453.9847,-1), round(453.9847,-2), round(453.9847,-3), round(456.9847,-1), round(-456.9847,-1); |450 |500 |0 |460 |-460 |
select sysdate, round(sysdate, 'hh'); |29.08.2005:11:17:43.00|29.08.2005:11:00:00.00|
select sysdate, round(sysdate, 'mi'); |29.08.2005:11:17:43.00|29.08.2005:11:18:00.00|
select sysdate, round(sysdate, 'd'); |29.08.2005:11:17:43.00|29.08.2005:00:00:00.00|
select sysdate, round(sysdate, 'm'); |29.08.2005:11:17:43.00|01.09.2005:00:00:00.00|
select sysdate, round(sysdate, 'y'); |29.08.2005:11:17:43.00|01.01.2006:00:00:00.00|