Справочник по функциям

STR_TO_DATE

Аналог в PostgreSQL:

Преобразует строку в дату, время или дату со временем по заданному формату.

MySQL 8.4
STR_TO_DATE(string, format)
string
Строка с датой или временем
VARCHAR
format
Формат строки, спецификаторы как у DATE_FORMAT
VARCHAR

Возвращаемое значение

Дата со временем, если формат содержит дату и время, иначе дата или время; NULL, если строка не подходит под формат, день больше 31 или месяц больше 12

Примеры

Разбор даты в формате ДД.ММ.ГГГГ

MySQL 8.4
SELECT STR_TO_DATE('16.06.2022', '%d.%m.%Y') AS parsed;
parsed
2022-06-16

Дата со временем из текста

MySQL 8.4
SELECT STR_TO_DATE('November 13, 1998 14:05', '%M %d, %Y %H:%i') AS parsed;
parsed
1998-11-13 14:05:00

Строка не подходит под формат

MySQL 8.4
SELECT STR_TO_DATE('2022/06/16', '%d.%m.%Y') AS parsed;
parsed
<NULL>

Подробности

Спецификаторы формата те же, что у DATE_FORMAT. Разбор идёт с начала строки: текст между спецификаторами должен совпадать с форматом, а лишние символы в конце строки игнорируются.

Существование даты не проверяется: день сверяется только с диапазоном от 1 до 31. STR_TO_DATE('31.02.2022', '%d.%m.%Y') вернёт несуществующую дату 2022-02-31, а не NULL. Чтобы отсеять такие даты, прибавьте к результату INTERVAL 0 DAY — лишние дни перейдут в следующий месяц (2022-03-03) — и сравните его через DATE_FORMAT с исходной строкой: у несуществующей даты строки не совпадут.

Смотрите также

Где изучить