pg_extra_time
pg_extra_time : Some date time functions and operators that,
Overview
| ID | Extension | Package | Version | Category | License | Language |
|---|---|---|---|---|---|---|
| 4220 | pg_extra_time | pg_extra_time | 2.1.0 |
UTIL | PostgreSQL | SQL |
| Attribute | Has Binary | Has Library | Need Load | Has DDL | Relocatable | Trusted |
|---|---|---|---|---|---|---|
| --s-d-r | No | Yes | No | Yes | yes | no |
| Relationships | |
|---|---|
| See Also | pgcalendar pg_math pgsql_tweaks pg_rrule |
Packages
| Type | Repo | Version | PG Major Compatibility | Package Pattern | Dependencies |
|---|---|---|---|---|---|
| EXT | PIGSTY | 2.1.0 |
18 17 16 15 14 | pg_extra_time |
- |
| RPM | PIGSTY | 2.1.0 |
18 17 16 15 14 | pg_extra_time_$v |
- |
| DEB | PIGSTY | 2.1.0 |
18 17 16 15 14 | postgresql-$v-pg-extra-time |
- |
| Linux / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| el8.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| el9.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| el9.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| el10.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| el10.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| d12.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| d12.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| d13.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| d13.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u22.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u22.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u24.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u24.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u26.x86_64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
| u26.aarch64 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 | PIGSTY 2.1.0 |
Source
github.com/bigsmoke/pg_extra_time
pg_extra_time-2.1.0.tar.gz
Install
Make sure PGDG and PIGSTY repo available:
Install this extension with pig:
Create this extension with:
Usage
Sources: pg_extra_time upstream README, PGXN pg_extra_time.
pg_extra_time provides small SQL functions and casts for date/time, interval, and range calculations that are awkward with PostgreSQL core functions alone.
Convert to Seconds (float)
Use to_float(...) or explicit casts to float/double precision for timestamps, timestamp ranges, and intervals. Timestamp values are measured from the Unix epoch; ranges and intervals are measured by duration in seconds.
Cast syntax also works:
Convert to Days
Use days(...) when fractions matter and whole_days(...) when an integer number of complete days is needed.
whole_days(interval) handles negative intervals by applying the sign after flooring the absolute day count.
Count Date Parts
date_part_parts(part, subpart, timestamp with time zone, timezone) returns how many smaller date parts exist in a larger date part at a given timestamp and timezone. This helps with calculations where a day is not always 24 hours because of DST.
Build And Split Ranges
Use make_tstzrange or make_tsrange to build ranges from a timestamp and interval, including negative intervals.
each_subperiod(tstzrange, interval, round_remainder integer DEFAULT 0) splits a timestamp range into interval-sized chunks. The remainder policy is: 1 rounds up to a full chunk, 0 keeps a partial final chunk, and -1 discards the remainder.
Extract And Remainder Intervals
to_interval(tstzrange) extracts an interval from a timestamp range using month, day, and microsecond units. to_interval(tstzrange, interval[]) accepts explicit units in greatest-first order and rounds down by discarding the remainder.
Use % or modulo(...) when the remainder matters.
Caveats
to_float(tstzrange) and to_float(tsrange) return positive or negative infinity for unbounded ranges and 0 for empty ranges. Integer casts are intentionally not provided; use whole_days(...) when you need integer days. Deprecated aliases such as extract_days(interval) and extract_interval(tstzrange, interval[]) remain for compatibility, but upstream recommends whole_days(...) and to_interval(...) instead.
Reference
Common public functions:
| Function | Use |
|---|---|
current_timezone() |
Return the active pg_timezone_names row |
date_part_parts(...) |
Count smaller date parts inside larger date parts |
days(...) |
Fractional or integer day count, depending on input type |
whole_days(...) |
Whole days from intervals or timestamp ranges |
to_float(...) |
Seconds from timestamps, timestamp ranges, or intervals |
to_interval(...) |
Interval extracted from a tstzrange |
make_tsrange(...) / make_tstzrange(...) |
Build ranges from timestamp plus interval |
each_subperiod(...) |
Split a tstzrange into subranges |
modulo(...) / % |
Remainder after dividing intervals or ranges |