La función TO_CHAR en Oracle es una herramienta fundamental para formatear datos en las consultas SQL. Permite convertir valores de tipo DATE
, TIMESTAMP
o incluso numéricos en cadenas de texto aplicando un formato específico a través de una máscara de salida. Esto la convierte en una opción imprescindible para personalizar cómo se muestran fechas, horas o números en informes y aplicaciones.
La función TO_CHAR es altamente flexible y permite usar máscaras de formato para adaptar la salida según las necesidades. Por ejemplo, puedes mostrar una fecha en el formato DD-MM-YYYY
o convertir una marca de tiempo en una representación más legible como HH:MI AM
. También es útil para operaciones con datos numéricos, como añadir separadores de miles o símbolos de moneda.
En este artículo, primero mostraré la sintaxis básica de la función, explicando cómo definir las máscaras de formato. Luego, incluiré ejemplos prácticos para mostrar cómo manejar distintas situaciones, como la generación de reportes personalizados o la preparación de datos para exportaciones.
Si quieres explorar más detalles técnicos, puedes consultar la documentación oficial de ORACLE sobre TO_CHAR.
Sintaxis
Escribe la siguiente sintaxis para utilizar la función TO_CHAR en Oracle:
TO_CHAR(fecha [, formato] [, lenguaje]);
En la sintaxis anterior:
- fecha: campo de fecha o intervalo
- formato: mascara de salida (opcional)
- lenguaje: determina en que idioma se van a mostrar, por ejemplo, los nombres de los meses.
Ejemplos
En el siguiente ejemplo convertimos la fecha del sistema en cadena de texto con la mascara YYYY-MM-DD
SELECT TO_CHAR( sysdate, 'YYYY-MM-DD' ) FROM dual;

Para convertir la fecha actual del sistema en una cadena de fecha larga, utilice el formato de fecha DL de la siguiente forma:
SELECT TO_CHAR( sysdate, 'DL' ) FROM dual;

Si quieres mostrar los nombres en otro idioma, utiliza la siguiente forma:
SELECT TO_CHAR( sysdate, 'DL') IDIOMA_POR_DEFECTO, TO_CHAR( sysdate, 'DL' , 'NLS_DATE_LANGUAGE = SPANISH') IDIOMA_MODIFICADO FROM dual;
