日付には形式がありません。データベースの内部に
フォーマットされた日付をプロシージャに提供する場合、それは文字列になり、OracleはNLS_DATE_FORMAT
を使用して暗黙的に日付にキャストしようとします。 セッションパラメータ:
UPDATE your_table
SET your_date_column = '18-06-14'; -- or equivalently via a bind parameter
暗黙的に変換されます
UPDATE your_table
SET your_date_column = TO_DATE(
'18-06-14',
( SELECT value
FROM NLS_SESSION_PARAMETERS
WHERE parameter = 'NLS_DATE_FORMAT' )
);
NLS_DATE_FORMAT
の場合 が一致しない場合、Oracleは例外を発生させます(パラメータは各ユーザーが設定できるため、一貫性があるとは限りません。特に、デフォルトの日付形式が地域と言語に依存する国際組織では)。
値を更新する場合は、DATE
を使用してください 文字列ではなくリテラル:
UPDATE your_table
SET your_date_column = DATE '2014-06-18';
または、文字列を明示的に変換して、フォーマットモデルを提供します。
UPDATE your_table
SET your_date_column = TO_DATE( '18-06-14', 'DD-MM-RR' );
関数にパラメーターを渡す場合も同様です。 DATE
を使用する 文字通り:
BEGIN
your_procedure(
p_launch_date => DATE '2014-06-18'
);
END;
/
または、文字列を明示的に日付に変換します(暗黙の変換に依存しません):
BEGIN
your_procedure(
p_launch_date => TO_DATE( '18-06-14', 'DD-MM-RR' )
);
END;
/