sql >> Databasteknik >  >> RDS >> Oracle

Var kan man ändra NLS_DATE_FORMAT i oracle 11g?

Om du vill ändra en NLS-parameter i en procedur kan du använda DBMS_SESSION.SET_NLS . Med tanke på en miljö som ser ut så här:

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

exekvering av proceduren ändras formatet (notera de tre enkla citattecken):

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 använda dynamisk SQL, EXECUTE IMMEDIATE , till exempel:

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 Grottanteckningar detta är högst ovanligt. Om du konverterar mellan datatyper bör du alltid göra detta explicit med ett tydligt format. När det gäller datum är den korrekta funktionen att använda TO_DATE()




  1. OPENXML med xmlns:dt

  2. MySQL IFNULL ANNAT

  3. Hur kan jag få position för ett fel i Oracle SQL-fråga?

  4. Rownum i postgresql