Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wo kann man das NLS_DATE_FORMAT in Oracle 11g ändern?

Wenn Sie einen NLS-Parameter in einer Prozedur ändern möchten, können Sie DBMS_SESSION.SET_NLS . Gegeben sei eine Umgebung, die wie folgt aussieht:

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

die Ausführung der Prozedur ändert das Format (beachten Sie die dreifachen einfachen Anführungszeichen):

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

Alternativ können Sie dynamisches SQL verwenden, EXECUTE IMMEDIATE , zum Beispiel:

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

Allerdings , als Justin Höhlennotizen das ist höchst ungewöhnlich. Wenn Sie zwischen Datentypen konvertieren, sollten Sie dies immer explizit tun mit einem expliziten Format. Im Fall von Datumsangaben ist die korrekte zu verwendende Funktion TO_DATE()