Усечение представления значения
Функция
Усечение значения с заданной точностью.
Спецификация
Синтаксические правила
-
При усечении
< числового выражения >
округление не выполняется. -
< Точность >
задает точность усечения: при положительном значении усечение выполняется после десятичной точки (количество цифр после десятичной точки). Отрицательное значение – точность округления перед десятичной точкой, т.е. при -1 – до ближайшего целого десятка, -2 – до сотни, -3 до тысячи и т.д.Примечание
При усечении до значения 1e-13 числа считаются равными.
-
< Элемент формата «дата-время» >
задает точность усечения значения типа «дата-время» (до какого элемента даты-времени должно выполняться усечение). -
Для
< выражения типа «дата-время» >
аргумент< точность >
можно не указывать. В этом случае усечение выполняется до текущего дня даты.select sysdate, trunc(sysdate,'d'), trunc(sysdate); |17.08.2015:10:55:11.79|17.08.2015:00:00:00.00|17.08.2015:00:00:00.00|
Возвращаемое значение
-
< Выражение >
, усеченное до заданной точности. -
Тип возвращаемого результата: для
< числового выражения >
DOUBLE, для< выражение типа «дата-время» >
DATE. -
Результат при указании
< элемента формата «дата-время» >
'D' зависит от наличия ключа /COMPATIBILITY=ORACLE в команде запуска ядра СУБД:-
значение DATE, усеченное до текущего дня, если ключ не задан;
-
значение DATE, усеченное до ближайшего дня начала недели, если ключ задан.
-
-
Результат при указании
< элемента формата «дата-время» >
'DY' или 'DAY' будет усечен до ближайшего дня начала недели. -
Если аргумент NULL, результат NULL.
Примеры
select round(6.785,1), trunc(6.785,1), round(-6.785,5), trunc(-6.785,0), abs(round((avg(salary) - max(salary)),2) - trunc((avg(salary) - max(salary)),0)), trunc(abs(round((avg(salary) - max(salary)),2) - trunc((avg(salary) - max(salary)),0)),5) from person; |6.8 |6.7 |-6.785 |-6 |0.160000000003492 |0.16 |
select sysdate, round(sysdate, 'hh'),trunc(sysdate, 'hh'); |29.08.2005:11:38:27.00|29.08.2005:12:00:00.00|29.08.2005:11:00:00.00|
select sysdate, round(sysdate, 'mi'),trunc(sysdate, 'mi'); |29.08.2005:11:38:27.00|29.08.2005:11:38:00.00|29.08.2005:11:38:00.00|
select sysdate, round(sysdate, 'd'),trunc(sysdate, 'd'); |29.08.2005:11:38:27.00|29.08.2005:00:00:00.00|29.08.2005:00:00:00.00|
select sysdate, round(sysdate, 'm'),trunc(sysdate, 'm'); |29.08.2005:11:38:27.00|01.09.2005:00:00:00.00|01.08.2005:00:00:00.00|
select sysdate, round(sysdate, 'y'),trunc(sysdate, 'y'); |29.08.2005:11:38:27.00|01.01.2006:00:00:00.00|01.01.2005:00:00:00.00|