STR_TO_DATE
Преобразует строку в дату, время или дату со временем по заданному формату.
STR_TO_DATE(string, format)- string
- Строка с датой или временемVARCHAR
- format
- Формат строки, спецификаторы как у DATE_FORMATVARCHAR
Возвращаемое значение
Дата со временем, если формат содержит дату и время, иначе дата или время; NULL, если строка не подходит под формат, день больше 31 или месяц больше 12
Примеры
Разбор даты в формате ДД.ММ.ГГГГ
SELECT STR_TO_DATE('16.06.2022', '%d.%m.%Y') AS parsed;Дата со временем из текста
SELECT STR_TO_DATE('November 13, 1998 14:05', '%M %d, %Y %H:%i') AS parsed;Строка не подходит под формат
SELECT STR_TO_DATE('2022/06/16', '%d.%m.%Y') AS parsed;Подробности
Спецификаторы формата те же, что у 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 с исходной строкой: у несуществующей даты строки не совпадут.