|
SQL - Formatos de Fecha (Obtener nombre del mes) |
|
|
¿Cómo obtendrías el nombre del mes a partir de su valor numérico? ... ¿estás pensando en usar IF, o tal vez DECODE? Esto se puede resolver de modo mucho más simple convirtiendo el valor numérico a fecha (mes correspondiente), y después pasándolo a string con la expresión de formato de fecha adecuada:
SQL> select to_char(to_date(to_char(03),'mm'),'Month') from dual;
TO_CHAR(TO
----------
Marzo
En el caso de que la aplicación que accede a Oracle no esté indicando que la sesión se establece con los valores de internacionalización (NLS) correspondientes a España, obtendríamos "March" (siguiendo con el ejemplo). Para obtener "Marzo" habría que indicar la variable NLS correspondiente en la propia expresión TO_CHAR:
SQL> select to_char(to_date(to_char(03),'mm'),'Month','NLS_DATE_LANGUAGE = SPANISH') from dual;
TO_CHAR(TO
----------
Marzo
Por supuesto, como ya sabéis, la expresión TO_CHAR para obtener el nombre del mes se puede usar dentro de código PL/SQL:
declare
mesn number(2);
mesc varchar(20);
begin
mesn:=3;
mesc:=to_char(to_date(to_char(mesn),'mm'),'Month','NLS_DATE_LANGUAGE = SPANISH');
dbms_output.put_line('El mes '||to_char(mesn)||' es '||mesc);
end;
/
Una forma de obtener el valor numérico de alguno de los componentes de la fecha (dia, mes, año, etc) es usando la función EXTRACT:
SQL> select extract(day from sysdate) dia, extract(month from sysdate) mes, extract(year from sysdate) anio from dual; DIA MES ANIO ---------- ---------- ---------- 5 10 2010
Referencias:
|
|
Última modificación ( 06.10.2010 )
|