sql >> Databáze >  >> RDS >> Oracle

Kde změnit NLS_DATE_FORMAT v oracle 11g?

Pokud chcete změnit parametr NLS v proceduře, můžete použít DBMS_SESSION.SET_NLS . Vzhledem k prostředí, které vypadá takto:

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

provedení procedury změní formát (všimněte si trojitých jednoduchých uvozovek):

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

Případně můžete použít dynamický SQL, EXECUTE IMMEDIATE , například:

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

Nicméně , jako Justin Jeskynní poznámky to je velmi neobvyklé. Pokud převádíte mezi datovými typy, měli byste to vždy dělat explicitně s explicitním formátem. V případě dat je správná funkce k použití TO_DATE()




  1. Generujte časové řady s denními statistikami pomocí dotazu PostgreSQL

  2. Jak se připojit k MySQL pomocí Perlu

  3. Kód výjimky zablokování pro PHP, MySQL PDOException?

  4. String_agg pro více sloupců