sql >> Database teknologi >  >> RDS >> Oracle

Hvor skal man ændre NLS_DATE_FORMAT i oracle 11g?

Hvis du vil ændre en NLS-parameter i en procedure, kan du bruge DBMS_SESSION.SET_NLS . Givet et miljø, der ser sådan ud:

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

udførelse af proceduren ændrer formatet (bemærk de tredobbelte anførselstegn):

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

Alternativt kan du bruge dynamisk SQL, EXECUTE IMMEDIATE , for eksempel:

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

Men , som Justin Hulenoter dette er meget usædvanligt. Hvis du konverterer mellem datatyper, bør du altid gøre dette eksplicit med et eksplicit format. I tilfælde af datoer er den korrekte funktion at bruge TO_DATE()




  1. Start af blogging til HTML5 og CSS3

  2. Forskellen mellem INSERT og COPY

  3. Oracle indsæt i retur

  4. Mysql henter alle rækker med limit