Convertir fecha a texto en Oracle pl/sql

Posted by in Oracle PL/SQL

De todos es conocido que lo que funciona bien en una instalación no tiene por que hacerlo del mismo modo en otra. Muchas veces, podemos encontrarnos con que una función debidamente testeada deja de funcionar como esperábamos porque la configuración de idioma, máscara de fecha, etc. es diferente de la configuración utilizada durante las pruebas.

Cuando utilicemos la función TO_CHAR para convertir una fecha a texto conviene especificar tanto el formato como el idioma evitando así estar sujetos a las distintas configuraciones.
La sintaxis de la función es la sigiuente
to_char( value, [ format_mask ], [ nls_language ]);
A continuación podéis ver una tabla con los posibles parámetros para definir el formato

Parameter Explanation
YEAR Year, spelled out
YYYY 4-digit year
YYY
YY
Y
Last 3, 2, or 1 digit(s) of year.
IYY
IY
I
Last 3, 2, or 1 digit(s) of ISO year.
IYYY 4-digit year based on the ISO standard
Q Quarter of year (1, 2, 3, 4; JAN-MAR = 1).
MM Month (01-12; JAN = 01).
MON Abbreviated name of month.
MONTH Name of month, padded with blanks to length of 9 characters.
RM Roman numeral month (I-XII; JAN = I).
WW Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
W Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
IW Week of year (1-52 or 1-53) based on the ISO standard.
D Day of week (1-7).
DAY Name of day.
DD Day of month (1-31).
DDD Day of year (1-366).
DY Abbreviated name of day.
J Julian day; the number of days since January 1, 4712 BC.
HH Hour of day (1-12).
HH12 Hour of day (1-12).
HH24 Hour of day (0-23).
MI Minute (0-59).
SS Second (0-59).
SSSSS Seconds past midnight (0-86399).
FF Fractional seconds.
Ejemplo:
select to_char(sysdate, 'Day, DD "de" Month de YYYY', 'NLS_DATE_LANGUAGE=SPANISH') from dual;

/*
 * Resultado: Miércoles, 05 de Diciembre de 2012
 */