SQLの変更:新しい日付と時刻の形式要素の追加(保留中)

注意

この動作変更は2026_03バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

この動作変更バンドルを有効にすると、新しい短縮形式の日付と時刻の形式要素が有効になり、日時のフォーマットと解析ロジックに影響します。

変更前:

日時から文字列へ、または文字列から日時への変換において、次の形式要素はリテラル文字として解析およびシリアル化されていました。YMODH24H12HMESP

変更後:

次の新しい形式要素が、解析およびフォーマットロジックによって解釈されるようになりました。

  • 「年」の``Y``(パディングなし)

  • 「月」の``MO``(パディングなし)

  • 「日」の``D``(パディングなし)

  • 「24時間ベースの時間」の``H24``(パディングなし)

  • 「12時間ベースの時間」の``H12``(パディングなし)

  • H24``の同義語としての``H

  • 「分」の``ME``(パディングなし)

  • 「秒」の``S``(パディングなし)

  • 「単一文字のAM/PMインジケーター」の``P``(AMの場合はA、PMの場合はP)

これらの文字やシーケンスを引用符で囲まずに使用すると、リテラルではなく形式要素として解釈されます。

この動作の変更は、DATE、TIME、TIMESTAMP_LTZ、TIMESTAMP_NTZ、またはTIMESTAMP_TZの形式モデルでこれらの新しい形式要素を引用符で囲まれていない文字として使用していたユーザーにとって、破壊的変更となる可能性があります。

例:

  • 以前は、SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD JST')``はシーケンス「JST」をリテラル文字として出力していました(例:``2026-03-18 JST)。

  • これにより、JST``の``S``は「秒」の形式要素として解釈されるようになり、フォーマットロジックは数値を挿入します(``2026-03-18 J47T)。

必要な作業

形式モデルでこれらの新しい形式要素のいずれかを引用符で囲まれていない文字または文字列として使用する場合は、リテラル文字として保持する必要がある形式モデルの部分を引用符で囲んでください。例:

-- Before (incorrect after this change):
SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD JST');

-- After (corrected):
SELECT TO_CHAR(current_timestamp(), 'YYYY-MM-DD "JST"');

参照:2281