Números

TRUNC

Quita la parte decimal de un número sin redondear.

Sintaxis

TRUNC(<número>)
TRUNC(<número>, <decimales>)

Simplemente corta las cifras sobrantes: 4.9 pasa a ser 4 y -4.9 pasa a ser -4, es decir, siempre hacia cero. El segundo argumento conserva el número de decimales que necesites, como en ROUND, pero sin redondear.

Datos para los ejemplos

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

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Quitar la parte decimal
SELECT TRUNC(4.9) AS positive,
TRUNC(-4.9) AS negative,
TRUNC(19.857, 2) AS two_digits;
positivenegativetwo_digits
4-419.85
ROUND y TRUNC lado a lado
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 se redondea a 121, pero se trunca a 120.

Ten en cuenta

No la confundas con FLOOR en los números negativos: TRUNC(-4.9) da -4, mientras que FLOOR(-4.9) da -5.

TRUNC(x, 2) solo existe para numeric: con double precision obtendrás function trunc(double precision, integer) does not exist. Convierte el tipo: TRUNC(x::numeric, 2).

En PostgreSQL, TRUNC no recorta fechas: es una costumbre de Oracle. Para recortar una fecha al mes o al día, usa DATE_TRUNC.

Funciones relacionadas