1

DATE 形式は、グローバル スコープ (nls_database_parameters) またはセッション スコープ (nls_session_parameters) で定義された NLS_DATE_FORMAT 設定によって制御されることを読みました。ただし、「YYYY.MM.DD」形式の DATE 値を挿入できます。ここに挿入があります:

INSERT INTO people (id, name, surname, birth) VALUES (11, 'John', 'Johny', '1979.02.23')

nls_database_parameters の設定は次のとおりです。

NLS_TERRITORY = AMERICA
NLS_DATE_FORMAT = DD-MON-RR
NLS_DATE_LANGUAGE = AMERICAN

nls_session_parameters の設定は次のとおりです。

NLS_TERRITORY = CANADA
NLS_DATE_FORMAT = RR-MM-DD
NLS_DATE_LANGUAGE = ENGLISH

想定どおり、選択時に出生値は「YY.MM.DD」と表示されるため、nls_session_parameters が優先されます。NSL_SESSION_Parameters は、Windows XP の地域および言語設定で使用される設定に関連しています。しかし、'YYYY.MM.DD' を挿入したときに Oracle が文句を言わないのはなぜですか?

更新: NLS_DATE_FORMAT が暗黙的に 'RR.MM.DD' (YY.MM.DD ではない) に設定されたようで、RR 年形式では完全な年を挿入できます。年の値が RR 形式で表示される場合、Oracleは 1950 から 2049 の範囲の年に丸めます。したがって、 06 は 1906 ではなく 2006 と見なされます。また、包括的な paulsm4 参照記事にも感謝します。

4

1 に答える 1

1

init.ora、またはセッションで設定したNLS_DATE_FORMATは、他の要因によって上書きされる可能性があります。詳細を示す良いリンクは次のとおりです。

于 2012-09-01T13:28:16.977 に答える