La función TO_CHAR de Oracle

Un error común cuando se está trabajando con bases de datos es comparar campos DATE con cadenas de caracteres.

En esta entrada vemos cómo utilizar TO_CHAR para convertir fechas en cadenas de caracteres.

Esta función recibe en su primer parámetro un dato en formato fecha y devuelve la fecha en el formato especificado en el segundo parámetro.

Sintaxis


TO_CHAR(date,format)

  • Date será una expresión que evalúa a un dato de tipo DATE.
  • Format será un campo personalizado donde indicamos el formato en el que queremos la cadena de caracteres resultante.

Contulta los formatos disponibles en Oracle.

Ejemplos

Vamos a generar cadenas de caracteres a partir de la función sysdate, que nos devuelve un tipo de dato DATE de la hora actual del sistema.

Fecha

En este caso queremos el día con dos dígitos, mes abreviado con tres letras y año con cuatro dígitos, separados por «/».

select TO_CHAR (sysdate,'DD/MON/YYYY') Fecha from dual;

Fecha y hora

Ahora vamos a generar lo mismo que en el apartado anterior pero añadiendo hora en formato 24 horas y los minutos.

Separados con un espacio con la fecha y «:» entre la hora y los minutos.

 
select TO_CHAR(sysdate,'DD/MON/YYYY HH24:MI') FechayHora from dual; 

2 opiniones en “La función TO_CHAR de Oracle”

  1. y si solo quiero manejar la hora? tengo un campo de 6 digitos ejemplo: (134255) y quiero que aparesca con el formato (HH24:MI:SS)

    1. Hola,

      Si tienes un campo de 6 dígitos, tienes un campo de 6 dígitos (numérico o de texto) no tienes un campo DATE.

      Para trabajar con fechas debes primero convertir a fechas, puedes revisar esta entrada para generar fechas a partir de cadenas de caracteres (TO_DATE)

      Por lo tanto, primero habría que convertir tu campo a fecha (metiendo cualquier día, mes y año), por ejemplo:

      select to_date (’01/01/2022 ‘||’134255′,’DD/MM/YYYY HH24:MI:SS’) from dual;

      Y después formatear la salida para que muestre solo la hora en el formato que quieres usando to_char, por ejemplo:

      select to_char(to_date (’01/01/2022 ‘||’134255′,’DD/MM/YYYY HH24:MI:SS’),’HH24:MI:SS’) from dual;

      Puedes consultar aquí los diferentes formatos de fechas en oracle.

      Saludos

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *