Oracle
 sql >> база данни >  >> RDS >> Oracle

Къде да променя NLS_DATE_FORMAT в oracle 11g?

Ако искате да промените NLS параметър в процедура, можете да използвате DBMS_SESSION.SET_NLS . Дадена е среда, която изглежда така:

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

изпълнението на процедурата променя формата (обърнете внимание на тройните единични кавички):

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

Като алтернатива можете да използвате динамичен SQL, EXECUTE IMMEDIATE , например:

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

Въпреки това , като Джъстин Пещерни бележки това е много необичайно. Ако конвертирате между типове данни, винаги трябва да правите това изрично с ясен формат. В случай на дати правилната функция за използване е TO_DATE()




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при извикване на java от PL/SQL

  2. PLS-00386:намерено е несъответствие на типа между FETCH курсора и INTO променливите

  3. Oracle PLSQL съкращава датите и часовете до 15-минутни блокове

  4. oracle - конвертирайте много формати за дата в една форматирана дата

  5. Oracle:Експортиране на набор от резултати за избор на оператор като INSERT SQL изрази, подобно на експортирането на SQL разработчици