PostgreSQL 17.9
TO_DATE(string, format)- string
- Строка с датойtext
- format
- Шаблон формата, например DD.MM.YYYYtext
Возвращаемое значение
Дата (date); ошибка, а не NULL, если поле не удаётся прочитать или такой даты не существует
Примеры
Дата из текста с месяцем
PostgreSQL 17.9
SELECT TO_DATE('November 13, 1998', 'Month DD, YYYY');Дата в формате DD.MM.YYYY
PostgreSQL 17.9
SELECT TO_DATE('08.03.2024', 'DD.MM.YYYY');Лишний текст и короткий год
PostgreSQL 17.9
SELECT TO_DATE('08.03.2024 garbage', 'DD.MM.YYYY') AS extra_text,
TO_DATE('8/3/24', 'DD.MM.YYYY') AS short_year;Подробности
Строка разбирается нестрого: лишний текст после шаблона пропускается, а число может занимать меньше цифр, чем в шаблоне. Поэтому TO_DATE('8/3/24', 'DD.MM.YYYY') вернёт 0024-03-08: двузначный год читается как есть, а не как 2024.
Для строки в формате YYYY-MM-DD проще использовать ::date: такое приведение проверяет строку целиком и не пропускает лишний текст.