pg_extra_time

一些关于日期与时间的扩展函数

概览

扩展包名版本分类许可证语言
pg_extra_time2.0.0UTILPostgreSQLSQL
ID扩展名BinLibLoadCreateTrustReloc模式
4220pg_extra_time-
相关扩展pgsql_tweaks periods temporal_tables pg_cron gzip bzip zstd http

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED2.0.01817161514pg_extra_time-
RPMPGDG2.0.01817161514pg_extra_time_$v-
DEBPIGSTY2.0.01817161514postgresql-$v-pg-extra-time-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d12.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d13.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
d13.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u22.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u22.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u24.x86_64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
u24.aarch64
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0
PIGSTY 2.0.0

构建

您可以使用 pig build 命令构建 pg_extra_time 扩展的 DEB 包:

pig build pkg pg_extra_time         # 构建 DEB 包

安装

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

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

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

pig install pg_extra_time;          # 当前活跃 PG 版本安装
pig ext install -y pg_extra_time -v 18  # PG 18
pig ext install -y pg_extra_time -v 17  # PG 17
pig ext install -y pg_extra_time -v 16  # PG 16
pig ext install -y pg_extra_time -v 15  # PG 15
pig ext install -y pg_extra_time -v 14  # PG 14
dnf install -y pg_extra_time_18       # PG 18
dnf install -y pg_extra_time_17       # PG 17
dnf install -y pg_extra_time_16       # PG 16
dnf install -y pg_extra_time_15       # PG 15
dnf install -y pg_extra_time_14       # PG 14
apt install -y postgresql-18-pg-extra-time   # PG 18
apt install -y postgresql-17-pg-extra-time   # PG 17
apt install -y postgresql-16-pg-extra-time   # PG 16
apt install -y postgresql-15-pg-extra-time   # PG 15
apt install -y postgresql-14-pg-extra-time   # PG 14

创建扩展

CREATE EXTENSION pg_extra_time;

用法

pg_extra_time: PostgreSQL 的额外日期/时间函数与运算符

转换为秒(浮点数)

SELECT to_float('1970-01-01 00:00:00+0'::timestamptz);  -- 0.0
SELECT to_float('1 day 1 sec'::interval);                -- 86401.0
SELECT to_float('[2024-06-06 05:58:00,2024-06-06 06:00:10]'::tstzrange);  -- 130.0

也支持类型转换语法:

SELECT '1970-01-01 01:03:01+00'::timestamptz::float;    -- 3181.00
SELECT '1 day 1 sec 200 ms'::interval::float;            -- 86401.2

转换为天数

SELECT days('[2024-06-06,2024-06-08 06:00]'::tstzrange);  -- 3.25(小数天数)
SELECT whole_days('[2024-06-06,2024-06-08 18:00]'::tstzrange);  -- 2(仅整天数)
SELECT days('10 days 12 hours'::interval);                -- 10.5
SELECT whole_days('10 days 20 hours'::interval);          -- 10

从范围中提取时间间隔

SELECT to_interval('[2024-01-01,2024-01-05]'::tstzrange);  -- 4 days

Each 函数(从范围生成序列)

SELECT * FROM each_subperiod('[2024-01-01,2024-01-05]'::tstzrange, '1 day'::interval);

运算符

-- 范围持续时间转换为浮点数(秒)
SELECT '[epoch,1970-01-01T01:03:01+00]'::tstzrange::float;
-- 时间间隔转换为浮点数(秒)
SELECT '10 seconds 100 milliseconds'::interval::float;  -- 10.100

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