Skip to content
unit

unit

pgunit : SI units extension

Overview

ID Extension Package Version Category License Language
3550
unit
pgunit
7.10
TYPE
GPL-2.0
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d--
No
Yes
No
Yes
no
no
Relationships
Requires
plpgsql
See Also
pgmp
numeral
prefix
semver
pgpdf
pglite_fusion
md5hash
asn1oid

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PGDG
7.10
18
17
16
15
14
pgunit plpgsql
RPM
PGDG
7.10
18
17
16
15
14
postgresql-unit_$v -
DEB
PGDG
7.10
18
17
16
15
14
postgresql-$v-unit -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
el8.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
el9.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
el9.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
el10.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
el10.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
d12.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
d12.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
d13.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
d13.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u22.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u22.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u24.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u24.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u26.x86_64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
u26.aarch64
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
PGDG 7.10
Package Version OS ORG SIZE File URL
postgresql-unit_18 7.10 el8.x86_64 pgdg 128.4 KiB postgresql-unit_18-7.10-4PGDG.rhel8.x86_64.rpm
postgresql-unit_18 7.10 el8.aarch64 pgdg 127.0 KiB postgresql-unit_18-7.10-4PGDG.rhel8.aarch64.rpm
postgresql-unit_18 7.10 el9.x86_64 pgdg 123.4 KiB postgresql-unit_18-7.10-4PGDG.rhel9.x86_64.rpm
postgresql-unit_18 7.10 el9.aarch64 pgdg 122.2 KiB postgresql-unit_18-7.10-4PGDG.rhel9.aarch64.rpm
postgresql-unit_18 7.10 el10.x86_64 pgdg 123.9 KiB postgresql-unit_18-7.10-4PGDG.rhel10.x86_64.rpm
postgresql-unit_18 7.10 el10.aarch64 pgdg 123.3 KiB postgresql-unit_18-7.10-4PGDG.rhel10.aarch64.rpm
postgresql-18-unit 7.10 d12.x86_64 pgdg 158.6 KiB postgresql-18-unit_7.10-2.pgdg12+1_amd64.deb
postgresql-18-unit 7.10 d12.aarch64 pgdg 157.1 KiB postgresql-18-unit_7.10-2.pgdg12+1_arm64.deb
postgresql-18-unit 7.10 d13.x86_64 pgdg 158.4 KiB postgresql-18-unit_7.10-2.pgdg13+1_amd64.deb
postgresql-18-unit 7.10 d13.aarch64 pgdg 157.2 KiB postgresql-18-unit_7.10-2.pgdg13+1_arm64.deb
postgresql-18-unit 7.10 u22.x86_64 pgdg 160.6 KiB postgresql-18-unit_7.10-2.pgdg22.04+1_amd64.deb
postgresql-18-unit 7.10 u22.aarch64 pgdg 158.5 KiB postgresql-18-unit_7.10-2.pgdg22.04+1_arm64.deb
postgresql-18-unit 7.10 u24.x86_64 pgdg 158.4 KiB postgresql-18-unit_7.10-2.pgdg24.04+1_amd64.deb
postgresql-18-unit 7.10 u24.aarch64 pgdg 157.0 KiB postgresql-18-unit_7.10-2.pgdg24.04+1_arm64.deb
postgresql-18-unit 7.10 u26.x86_64 pgdg 157.8 KiB postgresql-18-unit_7.10-2.pgdg26.04+1_amd64.deb
postgresql-18-unit 7.10 u26.x86_64 pigsty 168.9 KiB postgresql-18-unit_7.10-1PIGSTY~resolute_amd64.deb
postgresql-18-unit 7.10 u26.aarch64 pgdg 156.2 KiB postgresql-18-unit_7.10-2.pgdg26.04+1_arm64.deb
postgresql-18-unit 7.10 u26.aarch64 pigsty 168.2 KiB postgresql-18-unit_7.10-1PIGSTY~resolute_arm64.deb

Source

Install

Make sure PGDG repo available:

pig repo add pgdg -u    # add pgdg repo and update cache

Install this extension with pig:

pig install pgunit;		# install via package name, for the active PG version
pig install unit;		# install by extension name, for the current active PG version

pig install unit -v 18;   # install for PG 18
pig install unit -v 17;   # install for PG 17
pig install unit -v 16;   # install for PG 16
pig install unit -v 15;   # install for PG 15
pig install unit -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION unit CASCADE; -- requires plpgsql

Usage

unit: SI unit data type for PostgreSQL

The unit extension provides a data type for SI units, enabling dimensional analysis and unit conversion directly in SQL.

CREATE EXTENSION unit;

SELECT '9.81 m/s^2'::unit;
SELECT '120 km/h'::unit @ 'm/s' AS velocity;  -- 33.3333333333333 m/s

Base Units

meter (m), kilogram (kg), second (s), ampere (A), kelvin (K), mole (mol), candela (cd), byte (B).

Operators

Operator Description Example
+, - Add/subtract (same dimensions) '1 m'::unit + '50 cm'::unit
*, / Multiply/divide '5 kg'::unit * '9.81 m/s^2'::unit
^ Exponentiation by integer '2 m'::unit ^ 3
@ Convert to unit (returns unit) '2 MB/min'::unit @ 'GB/d'
@@ Convert to unit (returns double precision) '1 km'::unit @@ 'm'

Functions

Mathematical: sqrt(), exp(), ln(), log2(), cbrt(), asin(), tan(), etc.

Aggregates: sum(unit), avg(unit), min(unit), max(unit), stddev(), variance().

Input Formats

SELECT '3|4 m'::unit;            -- fractions: 0.75 m
SELECT '10:05:30 s'::unit;       -- time format: 36330 s
SELECT 'm⁻²'::unit;              -- Unicode superscripts

Unit Conversion

SELECT '2 MB/min'::unit @ 'GB/d';       -- 2.88 GB/d
SELECT '1 hl'::unit @ '0.5 l';          -- 200 * 0.5 l
SELECT '100 degC'::unit @ 'degF';        -- Fahrenheit conversion

Range Type

SELECT unitrange('earthradius_polar', 'earthradius_equatorial');

Configuration

  • unit.byte_output_iec: Binary prefixes (Ki, Mi, Gi)
  • unit.output_base_units: Show only base units
  • unit.time_output_custom: Format times using minutes/hours/days
  • unit.output_superscript: Unicode superscript exponents
Last updated on