Available in versions: Dev (3.16) | Latest (3.15) | 3.14 | 3.13 | 3.12 | 3.11 | 3.10 | 3.9 | 3.8 | 3.7

TRUNC

Applies to ✅ Open Source Edition   ✅ Express Edition   ✅ Professional Edition   ✅ Enterprise Edition

The TRUNC() function rounds a numeric value to its nearest integer (or optionally, to a specific decimal precision) that is closer to zero.

SELECT 
  trunc(1.7), 
  trunc(-1.7);
create.select(
  trunc(1.7), 
  trunc(-1.7)).fetch();

The result being

+-------+-------+
| trunc | trunc |
+-------+-------+
|     1 |    -1 |
+-------+-------+

Dialect support

This example using jOOQ:

trunc(1.7)

Translates to the following dialect specific expressions:

-- ASE
CASE
  WHEN sign(1.7E0) >= 0 THEN (floor((1.7E0 * 1)) / 1)
  ELSE (ceiling((1.7E0 * 1)) / 1)
END

-- AURORA_MYSQL, MARIADB, MEMSQL, MYSQL
truncate(1.7E0, 0)

-- AURORA_POSTGRES, POSTGRES
CAST(trunc(
  CAST(1.7E0 AS numeric),
  0
) AS double precision)

-- DB2, FIREBIRD, HSQLDB, INFORMIX, ORACLE, TERADATA, VERTICA
trunc(1.7E0, 0)

-- DERBY
CASE
  WHEN sign(1.7E0) >= 0 THEN (floor((1.7E0 * 1)) / 1)
  ELSE (ceil((1.7E0 * 1)) / 1)
END

-- H2
truncate(CAST(1.7E0 AS double), 0)

-- HANA
round(1.7E0, 0, round_down)

-- SQLDATAWAREHOUSE, SQLSERVER
round(1.7E0, 0, 1)

-- SYBASE
truncnum(1.7E0, 0)

-- ACCESS, BIGQUERY, COCKROACHDB, EXASOL, REDSHIFT, SNOWFLAKE, SQLITE, YUGABYTE
/* UNSUPPORTED */

(These are currently generated with jOOQ 3.16, see #10141), or translate your own on our website

Feedback

Do you have any feedback about this page? We'd love to hear it!

The jOOQ Logo