Расширение pg_when — человеческий способ записывать время
Расширение 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 особенно полезно для создания запросов вида «покажи заказы за последнюю неделю» так, чтобы они работали каждый день без модификации их текста и при этом сохраняли «читаемость».