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 参照記事にも感謝します。