A PostgreSQL extension for creating time values with natural language.
2.1K
A PostgreSQL extension for creating time values with natural language.
Gets the timestamp for the beginning of the current hour, but 5 days ago, in the Asia/Tokyo timezone.
SELECT when_is('5 days ago at this hour in Asia/Tokyo');
SELECT seconds_at('5 days ago at this hour in Asia/Tokyo');
SELECT millis_at('5 days ago at this hour in Asia/Tokyo');
SELECT micros_at('5 days ago at this hour in Asia/Tokyo');
Finds the time for next Friday at 8:00 PM in the America/New_York timezone.
SELECT when_is('next friday at 8:00 pm in America/New_York');
SELECT seconds_at('next friday at 8:00 pm in America/New_York');
SELECT millis_at('next friday at 8:00 pm in America/New_York');
SELECT micros_at('next friday at 8:00 pm in America/New_York');
Calculates the timestamp for exactly 2 months from now, at midnight, in the UTC-8 timezone.
SELECT when_is('in 2 months at midnight in UTC-8');
SELECT seconds_at('in 2 months at midnight in UTC-8');
SELECT millis_at('in 2 months at midnight in UTC-8');
SELECT micros_at('in 2 months at midnight in UTC-8');
Gets the timestamp for last Monday at a specific 24-hour time: 22:30 (10:30 PM).
SELECT when_is('last monday at 22:30');
SELECT seconds_at('last monday at 22:30');
SELECT millis_at('last monday at 22:30');
SELECT micros_at('last monday at 22:30');
Gets the timestamp for the evening (6 PM) on a specific date, New Year's Eve 2026. This shows how an exact date can be combined with a relative time keyword.
SELECT when_is('December 31, 2026 at evening');
SELECT seconds_at('December 31, 2026 at evening');
SELECT millis_at('December 31, 2026 at evening');
SELECT micros_at('December 31, 2026 at evening');
A pg-when query has up to three components: a date, a time, and a timezone. These components can be combined in several ways, connected by the keywords at and in.
All of the following are valid.
-- all
SELECT when_is('<date> at <time> in <timezone>');
-- date only
SELECT when_is('<date>');
SELECT when_is('<date> in <timezone>');
-- time only
SELECT when_is('<time>');
SELECT when_is('<time> in <timezone>');
-- date and time
SELECT when_is('<date> at <time>');
NOTE: If a timezone is not provided, the system defaults to UTC.
<date>A date can be either relative or exact.
Describes a date in relation to the present.
today, yesterday, tomorrownext week, last month, this friday, 5 days ago, in 2 yearsSpecifies a calendar date.
YYYY-MM-DD, YYYY/MM/DD (e.g. 2004-10-10, 2004/10/10)DD-MM-YYYY, DD/MM/YYYY (e.g. 10-10-2004, 10/10/2004)Month D, YYYY (e.g. January 10, 2004)D Month YYYY (e.g. 10 Jan 2004)<time>A time can be either relative or exact.
Describes a general or relative time.
noon (12 PM), midnight (12 AM), morning (9 AM), evening (6 PM)next hour, previous minute, this hourSpecifies aw precise time on the clock.
H:MM:SS AM/PM, H:MM:SS am/pm (e.g. 8:30 pm, 8:30 PM)HH:MM:SS GMT, HH:MM:SS (e.g. 15:45 GMT, 15:45)<timezone>A timezone can be a named reference or a UTC offset.
Uses standard IANA timezone names.
America/New_York, Europe/London, Africa/Addis_AbabaSpecifies the hours and minutes offset from Coordinated Universal Time.
UTC+3, UTC-08:00, UTC+05:30The following functions are provided by the Postgres extension.
| Function | Return Type | Description |
|---|---|---|
when_is | TIMESTAMP WITH TIME ZONE | Returns a standard PostgreSQL timestamp. |
seconds_at | BIGINT | Returns the total seconds since the UNIX epoch. |
millis_at | BIGINT | Returns the total milliseconds since the UNIX epoch. |
micros_at | BIGINT | Returns the total microseconds since the UNIX epoch. |
Content type
Image
Digest
sha256:2f379023d…
Size
179.7 MB
Last updated
about 2 months ago
docker pull frectonz/pg-when