Как проверить корректность введенной даты формата "месяц год" в PostgreSQL?

У меня на вход имеется строка, где указан период даты в формате <месяц> <год>, например: "февраль 2025"

Как мне проверить в процедуре на языке plpgsql, что формат соблюден и дата действительно является датой без ошибок?

Т.е. я должен отловить, что: сентябрябрь 2021, сочи 1991 и !!!!!!!! asdasdasd - это не корректная дата.


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Вот решение, основанное на идее @u111.

db-fiddle

SQL

with rs (test_me) as
(
  SELECT 'январь 2025'
  UNION ALL
  SELECT 'сочи 2023'
  
)
SELECT test_me,
  CASE
      WHEN test_me ~ '^(январь|февраль|март|апрель|май|июнь|июль|август|сентябрь|октябрь|ноябрь|декабрь) \d{4}$'
      THEN 'Valid'
      ELSE 'Invalid'
  END AS date_validity
FROM rs;

Результат

test_me date_validity
январь 2025 Valid
сочи 2023 Invalid
→ Ссылка