SQL0181N
日時値のストリング表記が許容範囲を超えています。
説明
日付、時刻、またはタイム・スタンプの値のストリング表記に、許容範囲を超える値が入っています。
このエラーは、アプリケーションが日時値の作成に使用したフォーマットとは異なる 日時フォーマットのテリトリー・コードを使っ て、 アプリケーションから日時値にアクセスしたことが原因で発生した可能性があります。 たとえば、dd/mm/yyyy のフォーマット で保管されたストリングの日付時刻値は、mm/dd/yyyy フォーマットを採用するアプリケーションを使用するときには無効になります 。
日付、時刻、またはタイム・スタンプの値の有効な範囲は、以下のとおりです。
・年の場合、0001 から 9999。
・月の場合、1 から 12。
・日の場合、1 から 31 (月が 1、 3、 5、 7、 8、 10、 12 の場合)。
・日の場合、1 から 30 (月が 4、6、9、11 の場合)。
・日の場合、1 から 28 (月が 2 (うるう年でない) 場合)。
・日の場合、1 から 29 (月が 2 (うるう年) の場合)。
・時間の場合、0 から 24。 時刻が 24 の場合、他の表示データは 0 になります。 時間フォーマットが USA の場合は、時刻は 12 以下でなければなりません。
・分の場合、0 から 59。
・秒の場合、0 から 59。
・小数秒の場合、0 から 999999999999。
・年間通算日の場合、001 から 365 (うるう年でない)。
・年間通算日の場合、001 から 366 (うるう年)。
フェデレーテッド・システム・ユーザーの場合: 問題はデータ・ソースでの日付/時刻表示の問題が原因である可能性があります。 データ・ソースでの日付と時刻の値の範囲については、データ・ソースの資料を参照してください。 理由が不明な場合は、問題を分離 して要求失敗の原因となったデータ・ソースを突き止め、そのデータ・ソースの日時表示の制約事項を調べてください。
ステートメントは処理できません。
ユーザーの処置
指定した値が有効な範囲内にあることを確認してください。また、アプリケーションの日付時刻フォーマットがそのストリング値と同じであることも 確認してください。
コード
-
SQLCODE : -181
SQLSTATE : 22007
原因・対処例
日付、時刻、タイムスタンプを表す文字列が誤っている。存在しない日付を指定している。
存在する日付に訂正することによりエラーを修正できる。
例えば、以下のSQLを実行するとエラーが発生します。
SQL> SELECT DATE('2021-11-31') 2 FROM SYSIBM.DUAL; 行 1 の近くでエラー: SQL0181N 日時値のストリング表記が許容範囲を超えています。
2021年11月31日は存在しないためエラーとなります。30日に変更するとエラーが出なくなります。
SQL> SELECT DATE('2021-11-30') 2 FROM SYSIBM.DUAL; 1 ------------ 2021-11-30