Ir al contenido principal

Convirtiendo Fechas a Carácter utilizando la Función TO_CHAR ok

Usted puede tomar ventaja de una variedad de modelos de formatos para convertir elementos DATE a cualquier representación carácter de una fecha utilizando la función TO_CHAR. Su sintaxis es:

TO_CHAR( date1, [format],[nls_parametro])

Solo el parámetro date1 es obligatorio y debe ser un valor fecha. El parámetro opcional format es case sensitive y debe ser encerrado entre comillas simples.  El format especifica que elementos son extraídos y si los elementos debe ser descritos con nombre largo o corto. Los nombres de los días y meses son automáticamente llenados con espacios.  Estos espacios pueden ser removidos con un modificar en el format llamado fill mode (fm) prefijándose al format esto permite eliminar los espacios. Hay varios formatos para fechas disponibles:





Ejemplo:

-- EN ESTE EJEMPLO EN EL CUAL NO SE ESPECIFICA UN FORMATO DE MASCARA
-- ORACLE UTILIZA LA MASCARA QUE ESTE DEFINIDA EN EL SQL DEVELOPER
SELECT TO_CHAR(SYSDATE) FROM DUAL;
SELECT 'LA FECHA DE HOY ES ' || TO_CHAR(SYSDATE) FROM DUAL;
SELECT TO_CHAR(SYSDATE) || ' ES LA FECHA DE HOY' FROM DUAL;

-- OBTIENE EL DIA DE LA FECHA
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DY') || 'DIA DE LA SEMANA' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY') || 'DIA DE LA SEMANA' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'day') || 'DIA DE LA SEMANA' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'FMDAY') || 'DIA DE LA SEMANA' FROM DUAL;

-- OBTIENE EL AÑO DEL ELEMENTO FECHA
SELECT TO_CHAR(SYSDATE,'Y') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'RR') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YEAR') || ' AÑO EN LETRAS' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'Year') FROM DUAL;

-- OBTIENE EL MES ABREVIADO DE LA FECHA
SELECT TO_CHAR(SYSDATE,'MON') || 'MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MONTH') || 'MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'fmMONTH') || 'MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MON') || 'MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'fmMON') || ' MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'fmMon') || ' MES ACTUAL' FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MM') || ' MES ACTUAL' FROM DUAL;

Las mascaras son case-sensitive ya que por ejemplo si especificamos la siguiente mascara “Month” es mes aparecerá con la primera letra mayúscula, sucede también con el elemento día y año en letras. Cuando especificamos una máscara para recuperar el nombre completo del mes, día o año Oracle agrega espacios a la derecha para eliminar esto debemos agregar el prefijo fm.
Para recuperar elementos como semana, siglo y otros menos utilizados utilizamos formatos de mascaras especificados en la tabla 5-6. Y para elementos tiempo utilizamos la tabla 5-7.

-- OTROS EJEMPLOS
SELECT TO_CHAR(SYSDATE,'DD-MM-YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'FMDAY, DD - MONTH - YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'fmDay - Month - Year') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'HH, HH12, HH24 AM MM SS SSSS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DDTH MM YYYY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'CC') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YEAR') FROM DUAL;

SELECT TO_CHAR(hire_date,'fmDay, "the" DDth "of" Month, Yyyysp.')
FROM   employees

WHERE  TO_CHAR(HIRE_DATE,'FMDAY') = 'SÁBADO'

Comentarios