sql >> データベース >  >> RDS >> Oracle

Oracle 11g で NLS_DATE_FORMAT を変更する場所は?

    プロシージャで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
    

    プロシージャを実行すると、フォーマットが変更されます (3 つの単一引用符に注意してください):

    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 を使用することもできます。即時 、例:

    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. SQL Serverリストテーブル:すべてのテーブルを表示する方法

    2. 特定の値を一番上に並べ替える

    3. MySQLのキーとしてハッシュされたSSNの代替

    4. PHPを使用したSQLインジェクション攻撃