Расширение pg_when — человеческий способ записывать время
Сколько раз составляя SQL-запрос Вы мучались, высчитывая выражения дат и времени для критериев отбора? Расширение pg_when решает эту задачу элегантно: оно парсит естественный язык (к сожалению, только английский) и возвращает timestamptz (или Unix epoch в секундах, миллисекундах, микросекундах).
Запрос для функций из pg_when состоит из трёх компонентов — дата, время, часовой пояс — соединённых ключевыми словами at и in.
Несколько примеров:
Поддерживаются относительные даты (today, yesterday, next week, last month, in 2 years), точные даты в разных форматах (YYYY-MM-DD, DD/MM/YYYY, 31-12-2026), время (midnight, evening, 20:00, 22:30) и именованные часовые пояса. Если часовой пояс не указан — используется UTC.
Расширение pg_when особенно полезно для создания запросов вида «покажи заказы за последнюю неделю» так, чтобы они работали каждый день без модификации их текста и при этом сохраняли «читаемость».
Сколько раз составляя SQL-запрос Вы мучались, высчитывая выражения дат и времени для критериев отбора? Расширение pg_when решает эту задачу элегантно: оно парсит естественный язык (к сожалению, только английский) и возвращает timestamptz (или Unix epoch в секундах, миллисекундах, микросекундах).
Запрос для функций из pg_when состоит из трёх компонентов — дата, время, часовой пояс — соединённых ключевыми словами at и in.
Несколько примеров:
```sql
-- Начало текущего часа, но 5 дней назад, в Москве
SELECT when_is('5 days ago at this hour in Europe/Moscow');
-- Следующая пятница, 20:00, в Москве
SELECT when_is('next friday at 20:00 in Europe/Moscow');
-- Ровно через 2 месяца, полночь, GMT+3
SELECT when_is('in 2 months at midnight in UTC+3');
-- Новогоднее выступление
SELECT when_is('31/12/2026 at 23:55');
-- Те же значения, но в Unix epoch
SELECT seconds_at('5 days ago at this hour in Europe/Moscow');
SELECT millis_at('5 days ago at this hour in Europe/Moscow');
SELECT micros_at('5 days ago at this hour in Europe/Moscow');
```Поддерживаются относительные даты (today, yesterday, next week, last month, in 2 years), точные даты в разных форматах (YYYY-MM-DD, DD/MM/YYYY, 31-12-2026), время (midnight, evening, 20:00, 22:30) и именованные часовые пояса. Если часовой пояс не указан — используется UTC.
Расширение pg_when особенно полезно для создания запросов вида «покажи заказы за последнюю неделю» так, чтобы они работали каждый день без модификации их текста и при этом сохраняли «читаемость».