sql >> Base de Datos >  >> RDS >> Oracle

¿Dónde cambiar NLS_DATE_FORMAT en Oracle 11g?

Si desea cambiar un parámetro NLS en un procedimiento, puede usar DBMS_SESSION.SET_NLS . Dado un entorno que se ve así:

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

ejecutar el procedimiento cambia el formato (tenga en cuenta las comillas simples triples):

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

Alternativamente, puede usar SQL dinámico, EXECUTE IMMEDIATE , por ejemplo:

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

Sin embargo , como Justin Notas de la cueva esto es muy inusual. Si está convirtiendo entre tipos de datos, siempre debe hacer esto explícitamente con un formato explícito. En el caso de fechas la función correcta a utilizar es TO_DATE()