Referencia de funciones

STR_TO_DATE

Equivalente en PostgreSQL:

Convierte una cadena en fecha, hora o fecha y hora según el formato indicado.

MySQL 8.4
STR_TO_DATE(string, format)
string
Cadena con una fecha o una hora
VARCHAR
format
Formato de la cadena, con los especificadores de DATE_FORMAT
VARCHAR

Valor devuelto

Fecha y hora si el formato incluye fecha y hora; si no, fecha u hora; NULL si la cadena no coincide con el formato, el día es mayor que 31 o el mes es mayor que 12

Ejemplos

Leer una fecha en formato DD.MM.AAAA

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

Fecha y hora a partir de una cadena

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

La cadena no coincide con el formato

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

Detalles

Los especificadores son los mismos que en DATE_FORMAT. La cadena se lee desde el principio: el texto entre los especificadores debe coincidir con el formato, y los caracteres sobrantes al final se ignoran.

No se comprueba si la fecha existe: el día solo se compara con el rango de 1 a 31. STR_TO_DATE('31.02.2022', '%d.%m.%Y') devuelve la fecha inexistente 2022-02-31, no NULL. Para descartar esas fechas, suma INTERVAL 0 DAY al resultado (los días sobrantes pasan al mes siguiente, 2022-03-03) y compáralo con la cadena de origen mediante DATE_FORMAT: con una fecha inexistente, las cadenas no coinciden.

Véase también

Dónde aprenderlo