Fechas y horas

TO_CHAR

Convierte una fecha, una hora o un número en texto con el formato que necesites.

Sintaxis

TO_CHAR(<valor>, '<formato>')

El formato se compone de patrones: DD, el día; MM, el mes; YYYY, el año; HH24, la hora; MI, los minutos. Todo lo demás, como puntos y dos puntos, se queda tal cual. Lo necesitas cuando hay que mostrar una fecha a las personas de una forma conocida, y no como la guarda la base de datos.

Datos para los ejemplos

orders

idcreated_atamount
12026-07-03 10:15:00120.50
22026-07-28 18:40:0080.25
32026-08-09 09:05:00199.99
42026-08-21 14:30:0045.00
52026-09-02 11:00:0064.75

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Fecha con el día delante y hora de 24 horas
SELECT TO_CHAR(TIMESTAMP '2026-09-13 15:47', 'DD.MM.YYYY') AS formatted_date,
TO_CHAR(TIMESTAMP '2026-09-13 15:47', 'HH24:MI') AS formatted_time;
formatted_dateformatted_time
13.09.202615:47
La fecha de cada pedido
SELECT id,
TO_CHAR(created_at, 'DD.MM.YYYY HH24:MI') AS created
FROM orders;
idcreated
103.07.2026 10:15
228.07.2026 18:40
309.08.2026 09:05
421.08.2026 14:30
502.09.2026 11:00
El nombre del mes
SELECT id,
TO_CHAR(created_at, 'FMMonth YYYY') AS month
FROM orders;
idmonth
1July 2026
2July 2026
3August 2026
4August 2026
5September 2026

FM quita los espacios con los que PostgreSQL rellena los nombres de los meses hasta la misma longitud. Los nombres salen en inglés.

Ten en cuenta

MM es el mes; los minutos son MI. TO_CHAR(TIMESTAMP '2026-09-13 15:47', 'HH24:MM') muestra 15:09: la hora y el número del mes.

El resultado es texto, así que se ordena como texto: August, July, September. Ordena por la propia fecha y deja TO_CHAR para mostrarla.

Sin FM, los nombres de los meses se rellenan con espacios hasta 9 caracteres: el formato 'Month' para julio da July y cinco espacios más.

Funciones relacionadas