Fechas y horas

TO_DATE

Convierte un texto en fecha según el formato indicado.

Sintaxis

TO_DATE(<texto>, '<formato>')

El reflejo de TO_CHAR: lee una fecha de un texto escrito de forma distinta a la que espera PostgreSQL, por ejemplo 13.09.2026. Los patrones son los mismos: DD, el día; MM, el mes; YYYY, el año; Month, el nombre del mes.

Una fecha con el día delante
SELECT TO_DATE('13.09.2026', 'DD.MM.YYYY') AS day;
day
2026-09-13
El formato estadounidense
SELECT TO_DATE('09/13/2026', 'MM/DD/YYYY') AS day;
day
2026-09-13

El mismo día: el mes y el día simplemente van en otro orden.

Con el nombre del mes
SELECT TO_DATE('13 September 2026', 'DD Month YYYY') AS day;
day
2026-09-13

Ten en cuenta

El formato tiene que coincidir con el texto en su sentido: TO_DATE('13.09.2026', 'MM.DD.YYYY') da el error date/time field value out of range, porque no existe el mes 13.

Los separadores no se comprueban de forma estricta: TO_DATE('13.09.2026', 'DD-MM-YYYY') también funciona. Así que TO_DATE no te sirve para comprobar si un texto está de verdad en el formato esperado.

¿El texto ya tiene la forma habitual 2026-09-13? Entonces no necesitas TO_DATE: basta con '2026-09-13'::date. Una fecha con hora la lee TO_TIMESTAMP, pero devuelve timestamp with time zone: si necesitas uno normal, añade ::timestamp.

Funciones relacionadas