Числа

TRUNC

Відкидає дробову частину числа без округлення.

Синтаксис

TRUNC(<число>)
TRUNC(<число>, <знаки>)

Просто відрізає зайві цифри: 4.9 стає 4, а -4.9 — -4, тобто завжди в бік нуля. Другий аргумент лишає потрібну кількість знаків після коми, як у ROUND, але без округлення.

Дані для прикладів

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Відкинути дробову частину
SELECT TRUNC(4.9) AS positive,
TRUNC(-4.9) AS negative,
TRUNC(19.857, 2) AS two_digits;
positivenegativetwo_digits
4-419.85
ROUND і TRUNC поруч
SELECT id, amount,
ROUND(amount) AS rounded,
TRUNC(amount) AS truncated
FROM orders;
idamountroundedtruncated
1120.50121120
280.258080
3199.99200199
445.004545
564.756564

120.50 округлюється до 121, а обрізається до 120.

Зверни увагу

Не плутай з FLOOR для від'ємних чисел: TRUNC(-4.9) дає -4, а FLOOR(-4.9) — -5.

TRUNC(x, 2) існує лише для numeric: для double precision буде помилка function trunc(double precision, integer) does not exist. Приведи тип: TRUNC(x::numeric, 2).

Дати TRUNC у PostgreSQL не обрізає — це звичка з Oracle. Обрізати дату до місяця чи дня — DATE_TRUNC.

Схожі функції