Как проверить корректность введенной даты формата "месяц год" в PostgreSQL?
У меня на вход имеется строка, где указан период даты в формате <месяц> <год>
, например: "февраль 2025"
Как мне проверить в процедуре на языке plpgsql, что формат соблюден и дата действительно является датой без ошибок?
Т.е. я должен отловить, что: сентябрябрь 2021
, сочи 1991
и !!!!!!!! asdasdasd
- это не корректная дата.
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
Вот решение, основанное на идее @u111.
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 |