Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Onde alterar o NLS_DATE_FORMAT no oracle 11g?


Se você deseja alterar um parâmetro NLS em um procedimento, pode usar DBMS_SESSION.SET_NLS . Dado um ambiente que se parece com isso:
SQL> select value
  2    from nls_session_parameters
  3   where parameter = 'NLS_DATE_FORMAT';

VALUE
------------------------------------------

DD-MON-RR

SQL> select sysdate from dual;

SYSDATE
---------
25-NOV-14

executar o procedimento altera o formato (observe as aspas simples triplas):
SQL> begin
  2     dbms_session.set_nls('nls_date_format', '''yyyy-mm-dd''');
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select sysdate from dual;

SYSDATE
----------
2014-11-25

Como alternativa, você pode usar SQL dinâmico, EXECUTE IMMEDIATE , por exemplo:
SQL> begin
  2     execute immediate 'alter session set nls_date_format = ''yyyy-mm''';
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select sysdate from dual;

SYSDATE
-------
2014-11

No entanto , como Justin Notas da caverna isso é altamente incomum. Se você estiver convertendo entre tipos de dados, sempre faça isso explicitamente com formato explícito. No caso de datas, a função correta a ser usada é TO_DATE()