1

省略された文字列を含む日付の文字列をフォーマットする必要があります。私が試した:

to_date('Fri  Jul 24', 'DY MON DD')

動作しません。オラクルの NLS パラメータがフランス語に設定されているためだと考えました。理由はわかりません。

SELECT * FROM V$NLS_PARAMETERS
----------------------
NLS_LANGUAGE                FRENCH
NLS_TERRITORY               FRANCE
NLS_CURRENCY                €
NLS_ISO_CURRENCY            FRANCE
NLS_NUMERIC_CHARACTERS      , 
NLS_CALENDAR                GREGORIAN
NLS_DATE_FORMAT             DD/MM/RR
NLS_DATE_LANGUAGE           FRENCH
NLS_CHARACTERSET            AL32UTF8
NLS_SORT                    FRENCH
NLS_TIME_FORMAT             HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT        DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT          HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT     DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY           €
NLS_NCHAR_CHARACTERSET      AL16UTF16
NLS_COMP                    BINARY
NLS_LENGTH_SEMANTICS        BYTE
NLS_NCHAR_CONV_EXCP         FALSE

もちろん、私はフランス語の変換をテストしました:

to_date('Vendredi  Juillet 24', 'DAY MONTH DD')

これは機能します。次に、短縮版を試しました。

to_date('Ven  Jui 24', 'DY MON DD')

これは機能しません。

とにかく、私は英語の変換に興味があるので、NLS をフランス語から英語に切り替えることから始めるべきです。それ、どうやったら出来るの?このリンクから次の手順に従いました: http://docs.oracle.com/cd/E12102_01/books/AnyInstAdm784/AnyInstAdmPreInstall18.htmlが、成功しませんでした。何か案が?

4

2 に答える 2

2

変更する場合は、むしろこのリンクを参照してください - そして最初にそれらがどのように機能するかを理解してください - NLS パラメータ: http://docs.oracle.com/cd/E11882_01/server.112/e10729/ch3globenv.htm#i1005949


NLS パラメータは、次の方法で指定できます。


  1. サーバーの初期化パラメータとして

デフォルトのセッションNLS環境を指定するために、初期化パラメータ・ファイルにパラメータを含めることができます。これらの設定は、クライアント側には影響しません。サーバーの動作のみを制御します。例えば:

                  NLS_TERRITORY = "CZECH REPUBLIC"

2. クライアントの環境変数として

プラットフォームに依存する可能性がある NLS 環境変数を使用して、クライアントのロケールに依存する動作を指定したり、初期化パラメータ ファイルでセッションに設定されたデフォルト値をオーバーライドしたりできます。たとえば、UNIX システムでは次のようになります。

                  % setenv NLS_SORT FRENCH

3. ALTER SESSION ステートメントを使用する

ALTER SESSION ステートメントで設定された NLS パラメータを使用して、初期化パラメータ ファイルでセッションに設定されたデフォルト値、または環境変数を使用してクライアントによって設定されたデフォルト値を上書きできます。

                ALTER SESSION SET NLS_SORT = FRENCH;

4. SQL 関数内

NLS パラメータを明示的に使用して、SQL 関数内で NLS の動作をハードコーディングできます。この方法により、初期化パラメータ ファイルでセッションに設定されているデフォルト値、環境変数を使用してクライアントに設定されているデフォルト値、または ALTER SESSION ステートメントによってセッションに設定されているデフォルト値が上書きされます。例えば:

         TO_CHAR(hiredate, 'DD/MON/YYYY', 'nls_date_language = FRENCH')

クライアントのセッション NLS パラメータ(サーバーのパラメータではない)によって、SQL ステートメントでの変換の動作が決まることに注意してください。クライアントは、サーバーから独自の NLS パラメータを取得できますが、そうする必要はありません。たとえば、SQL Developerでは、ツール/プリファレンス/データベース/NLSオプションのメニューでセッションのNLSパラメータを設定できますが、デフォルト設定は通常、PCから導出されます(たとえば、MS-Windows言語設定またはNLS_LANG環境変数の場合、存在します)。
各クライアントには、これらのパラメーターを設定する独自の方法があります。クライアントのドキュメントを参照する必要があります。

たとえば、サーバーがフランスにあり、NLS 設定が「フランス」であると想像してみてください。ただし、最初のクライアントはアメリカから接続しており、2 番目のクライアントはノルウェーから接続しています。最初のクライアントはアメリカの日付を表示したいので、クライアントの NLS パラメータを NLS = 'America. 2 番目のクライアントは、言語設定を NLS = 'Norway" に設定し、ローカルの適切な形式で日付を表示します。 コマンド


を使用して、クライアントに関係なく、セッションで NLS 設定をいつでも変更できます。ALTER SESSION

于 2015-07-25T08:48:42.857 に答える
1

短縮されたフランス語の形式はVen. Juil. 24、ピリオドが不可欠であるように見えます。

オプションの 3 番目の引数を指定することで、TO_DATE および TO_CHAR 関数の日付言語を変更できます。

to_char(sysdate,'Dy Mon dd','NLS_DATE_LANGUAGE = FRENCH')
to_char(sysdate,'Dy Mon dd','NLS_DATE_LANGUAGE = AMERICAN')
于 2015-07-24T18:14:48.077 に答える