unit

SI 国标单位扩展

概览

扩展包名版本分类许可证语言
pgunit7.10TYPEGPL-2.0C
ID扩展名BinLibLoadCreateTrustReloc模式
3520unit-
相关扩展plpgsql pgmp numeral prefix semver pgpdf pglite_fusion md5hash asn1oid

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG7.101817161514pgunitplpgsql
RPMPGDG7.101817161514postgresql-unit_$v-
DEBPGDG7.101817161514postgresql-$v-unit-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
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
u22.aarch64
u24.x86_64
u24.aarch64

安装

您可以直接安装 pgunit 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pgunit;          # 当前活跃 PG 版本安装
pig ext install -y pgunit -v 18  # PG 18
pig ext install -y pgunit -v 17  # PG 17
pig ext install -y pgunit -v 16  # PG 16
pig ext install -y pgunit -v 15  # PG 15
pig ext install -y pgunit -v 14  # PG 14
dnf install -y postgresql-unit_18       # PG 18
dnf install -y postgresql-unit_17       # PG 17
dnf install -y postgresql-unit_16       # PG 16
dnf install -y postgresql-unit_15       # PG 15
dnf install -y postgresql-unit_14       # PG 14
apt install -y postgresql-18-unit   # PG 18
apt install -y postgresql-17-unit   # PG 17
apt install -y postgresql-16-unit   # PG 16
apt install -y postgresql-15-unit   # PG 15
apt install -y postgresql-14-unit   # PG 14

创建扩展

CREATE EXTENSION unit CASCADE;  -- 依赖: plpgsql

用法

unit: PostgreSQL 的 SI 单位数据类型

unit 扩展提供了 SI 单位数据类型,可在 SQL 中直接进行量纲分析和单位换算。

CREATE EXTENSION unit;

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

基本单位

米 (m)、千克 (kg)、秒 (s)、安培 (A)、开尔文 (K)、摩尔 (mol)、坎德拉 (cd)、字节 (B)。

运算符

运算符说明示例
+, -加/减(需相同量纲)'1 m'::unit + '50 cm'::unit
*, /乘/除'5 kg'::unit * '9.81 m/s^2'::unit
^整数次幂'2 m'::unit ^ 3
@转换单位(返回 unit)'2 MB/min'::unit @ 'GB/d'
@@转换单位(返回 double precision)'1 km'::unit @@ 'm'

函数

数学函数:sqrt()exp()ln()log2()cbrt()asin()tan() 等。

聚合函数:sum(unit)avg(unit)min(unit)max(unit)stddev()variance()

输入格式

SELECT '3|4 m'::unit;            -- 分数:0.75 m
SELECT '10:05:30 s'::unit;       -- 时间格式:36330 s
SELECT 'm⁻²'::unit;              -- Unicode 上标

单位换算

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';        -- 华氏温度转换

范围类型

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

配置

  • unit.byte_output_iec:二进制前缀(Ki, Mi, Gi)
  • unit.output_base_units:仅显示基本单位
  • unit.time_output_custom:使用分/时/日格式化时间
  • unit.output_superscript:Unicode 上标指数

最后修改 2026-03-14: update extension metadata (953cbd0)