quarta-feira, 28 de janeiro de 2009

Escrever o nome do mês em Oracle

Muitas vezes é necessário escrever o mês por extenso. Para tanto, no Oracle basta especificar a formatação adequada:

SQL> select to_char(sysdate, 'Month') from dual;

TO_CHAR(SYSDATE,'MONTH')
------------------------------------
January

Se o mês não estiver em uma data, mas em um campo numérico separado do dia e ano (má escolha, mas as vezes acontece), primeiro é necessário transformar em um valor do tipo Date.

SQL> select to_char(to_date(10, 'mm'), 'Month') from dual;

TO_CHAR(TO_DATE(10,'MM'),'MONTH')
------------------------------------
October


E se precisar do nome dos meses em português, basta trocar o atributo da sessão:

ALTER SESSION
SET NLS_DATE_LANGUAGE = Portuguese;


SQL> select to_char(sysdate, 'Month') from dual;


TO_CHAR(SYSDATE,'MONTH')
------------------------------------
Janeiro

3 comentários:

  1. Ótimas dicas, me ajudaram bastante!

    ResponderExcluir
  2. Tenta assim tbem:
    select to_char(sysdate,'MONTH','NLS_DATE_LANGUAGE= ''BRAZILIAN PORTUGUESE''') from dual

    roda independente de como estiver a configuração do banco e converte em tempo de execução.

    ResponderExcluir
  3. a dica do comentário acima resolveu melhor, parabéns pela dica.

    ResponderExcluir