sql >> Database >  >> RDS >> Oracle

Waar verander je de NLS_DATE_FORMAT in orakel 11g?

Als u een NLS-parameter in een procedure wilt wijzigen, kunt u DBMS_SESSION.SET_NLS . Gegeven een omgeving die er als volgt uitziet:

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

het uitvoeren van de procedure verandert het formaat (let op de drievoudige enkele aanhalingstekens):

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

Als alternatief kunt u dynamische SQL gebruiken, EXECUTE IMMEDIATE , bijvoorbeeld:

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

Echter , als Justin Grotnotities dit is hoogst ongebruikelijk. Als u tussen datatypes converteert, moet u dit altijd expliciet doen met een expliciete indeling. In het geval van datums is de juiste functie om te gebruiken TO_DATE()




  1. ORA-01779:kan geen kolom wijzigen die is toegewezen aan een niet-sleutelbewaarde tabel

  2. Hoe REGEXP_SUBSTR() werkt in MariaDB

  3. SQL Server AlwaysOn-beschikbaarheidsgroepen:installatie en configuratie, deel 2

  4. Is er een manier om alle bestaande tabelgegevens naar UTF8-sortering te converteren?