Доступные версии документации

Усечение представления значения

Функция

Усечение значения с заданной точностью.

Спецификация
 
<синтаксис>::=
Синтаксические правила
  1. При усечении <числового выражения> округление не выполняется.

  2. <Точность> задает точность усечения: при положительном значении усечение выполняется после десятичной точки (количество цифр после десятичной точки). Отрицательное значение – точность округления перед десятичной точкой, т.е. при -1 – до ближайшего целого десятка, -2 – до сотни, -3 до тысячи и т.д.

    Примечание

    При усечении до значения 1e-13 числа считаются равными.

  3. <Элемент формата «дата-время»> задает точность усечения значения типа «дата-время» (до какого элемента даты-времени должно выполняться усечение).

  4. Для <выражения типа «дата-время»> аргумент <точность> можно не указывать. В этом случае усечение выполняется до текущего дня даты.

    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|

Возвращаемое значение
  1. <Выражение>, усеченное до заданной точности.

  2. Тип возвращаемого результата: для <числового выражения> DOUBLE, для <выражение типа «дата-время»> DATE.

  3. Результат при указании <элемента формата «дата-время»> 'D' зависит от наличия ключа /COMPATIBILITY=ORACLE в команде запуска ядра СУБД:

    • значение DATE, усеченное до текущего дня, если ключ не задан;

    • значение DATE, усеченное до ближайшего дня начала недели, если ключ задан.

  4. Результат при указании <элемента формата «дата-время»> 'DY' или 'DAY' будет усечен до ближайшего дня начала недели.

  5. Если аргумент 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|
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter