日付を返す関数を使用する場合、Oracle Databaseは、NLS_DATE_FORMAT
の値に基づいてこれらの日付を返します。 パラメータ。
NLS_TIMESTAMP_FORMAT
もあります パラメータとNLS_TIMESTAMP_TZ_FORMAT
パラメータ。どちらも、個別に指定できる日時形式のマスクがあります。
これらのパラメータはすべて、NLS_TERRITORY
から派生したデフォルト値を持っています パラメータ(デフォルトでは、オペレーティングシステムに依存します)。
したがって、セッションの日付形式を変更するには、NLS_TERRITORY
を更新することができます。 パラメータ、または各パラメータを個別に明示的に更新します。
この記事では、これらの値を確認および変更し、結果を表示する例を示します。
初期設定を確認する
まず、 NLS_DATE_FORMAT
の現在の設定を確認しましょう パラメータ:
SELECT
PARAMETER,
VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER IN (
'NLS_TERRITORY',
'NLS_DATE_FORMAT',
'NLS_TIMESTAMP_FORMAT',
'NLS_TIMESTAMP_TZ_FORMAT'
);
結果:
パラメータ値___________________________________________________________NLS_TERRITORY AUSTRALIA NLS_DATE_FORMAT DD / MON / RR NLS_TIMESTAMP_FORMAT DD / MON / RR HH12:MI:SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD / MON / RR HH12:MI:RSSFF
NLS_TERRITORY
の値 パラメータはAUSTRALIA
です 、したがって、さまざまな日時パラメータはオーストラリアのデフォルトの形式モデルを使用します。 この値は、特定の関数を使用するときに日付がどのようにフォーマットされるかに影響します。たとえば、
SYSDATE
の使用例を次に示します。 現在の日付を返すには:SELECT SYSDATE FROM DUAL;
結果:
04 / AUG / 21設定の変更
ALTER SESSION
を使用できます これらのパラメータの設定を変更するステートメント。これらの各パラメータを個別に変更するか、
NLS_TERRITORY
を変更するオプションがあります。 パラメータ。これらの各パラメータを暗黙的に自動的に更新します。
NLS_TERRITORY
を変更します パラメータ
NLS_TERRITORY
を変更する例を次に示します。 パラメータ:ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
結果:
セッションが変更されました。新しい値を確認しましょう:
SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER IN ( 'NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT' );
結果:
パラメータ値_________________________________________________________NLS_TERRITORY AMERICA NLS_DATE_FORMAT DD-MON-RR NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MONそのため、地域が更新されただけでなく、さまざまな日時パラメータも更新されたことがわかります。
NLS_DATE_FORMAT
だけを変更します パラメータ
NLS_DATE_FORMAT
を更新する例を次に示します。 パラメータ:ALTER SESSION SET NLS_DATE_FORMAT = 'rr-mm-dd';
結果:
セッションが変更されました。新しい値を確認しましょう:
SELECT PARAMETER, VALUE FROM V$NLS_PARAMETERS WHERE PARAMETER IN ( 'NLS_TERRITORY', 'NLS_DATE_FORMAT', 'NLS_TIMESTAMP_FORMAT', 'NLS_TIMESTAMP_TZ_FORMAT' );
結果:
パラメータ値_________________________________________________________NLS_TERRITORY AMERICA NLS_DATE_FORMAT rr-mm-dd NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIMESTAMP_TZ_FORMAT DD-MON予想どおり、
NLS_DATE_FORMAT
のみ パラメータが新しい形式に変更されました。その他は変更されません。ここで、
SYSDATE
を実行すると 、日付は新しい形式で返されますが、SYSTIMESTAMP
NLS_TIMESTAMP_TZ_FORMAT
を使用して返します 変更されていない形式:SELECT SYSDATE, SYSTIMESTAMP FROM DUAL;
結果:
SYSDATE SYSTIMESTAMP ___________ _________________________________________ 21-08-09 09-AUG-21 07.22.35.402453000 PM -04:00