web-dev-qa-db-ja.com

Oracle固有のタイムスタンプ形式 'DD-MON-RR HH.MI.SSXFF AM'

Oracle11g固有のタイムスタンプ形式に問題があります。

これは私が持っているものです:select to_timestamp('21-OCT-15 08.24.30.000000000 PM','DD-MON-RR HH.MI.SSXFF AM') from dual;

データベースからの応答:ORA-01855: AM/A.M. or PM/P.M. required 01855. 00000 - "AM/A.M. or PM/P.M. required"

また、いくつかのコマンドを使用してセッション設定を変更しようとしましたが、まだ何もありません。

alter session set NLS_LANGUAGE='ENGLISH';
alter session set NLS_DATE_LANGUAGE='ENGLISH';
alter session set NLS_TIMESTAMP_FORMAT = 'DD-MON-RR HH.MI.SSXFF AM';
alter session set NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RR HH.MI.SSXFF AM';

SELECTステートメントでタイムスタンプ形式を変更できません。そのままにしておく必要があります。問題はセッション設定にあると思います。

Oracleデータベース管理の経験がある人が何か提案できるので、試してみます。同様の投稿がいくつかあることは知っていますが、解決策が見つかりませんでした。ありがとう

これが私のセッション設定です。

select * from nls_session_parameters;

Session Parameters

5
Josip

最後に、前のリストにテリトリーを追加して、セッションプロパティを変更しました。ありがとう

ALTER SESSION SET NLS_TERRITORY=AMERICA;
ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
ALTER SESSION SET NLS_TIME_FORMAT='HH.MI.SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-RR HH.MI.SSXFF AM';
ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RRRR HH.MI.SSXFF AM TZR';
ALTER SESSION SET NLS_TIME_TZ_FORMAT='HH.MI.SSXFF AM TZR';
1
Josip

NLS設定のバックアップを取る これらを実行します。

    ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-RRRR HH24:MI:SS';
    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';
    ALTER SESSION SET NLS_TIME_FORMAT='HH.MI.SSXFF AM';
    ALTER SESSION SET NLS_TIMESTAMP_FORMAT='DD-MON-RR HH.MI.SSXFF AM';
    ALTER SESSION SET NLS_TIME_TZ_FORMAT='HH.MI.SSXFF AM TZR';
    ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='DD-MON-RRRR HH.MI.SSXFF AM TZR';

次に、SQLステートメントを再度実行します。

1
Utsav