16.20 - 月のスカラー算術の問題 - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQL日付と時刻の関数および式

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1211-162K-JPN

ターゲット月の日数がソース日付の月よりも少ない場合の一貫した取り扱いは、月の間隔に関するスカラー算術での重要な論題です。月の概念には固定的な定義がないからです。

日付に関するすべてのスカラー関数はグレゴリオ暦を使用します。グレゴリオ暦の特殊性により、90日(3ヶ月を表わす)を加算するとか、730日(2年を表わす)を加算するといった算術演算によって一般的に期待通りの結果が得られるわけではありません。詳細は、グレゴリオ暦のルールを参照してください。

ADD_MONTHS関数が使用するアルゴリズムでは、date_expressionまたはtimestamp_expressionに対して月数を加算または減算することができるので、一貫して有効な結果を得ることができます。

Teradata SQLのADD_MONTHS関数またはANSI SQL:2011の日時 間隔算術のどちらを使うかを判断する際に、有効ではあるけれども望まない結果が戻されるか、それとも結果が戻されずにエラー メッセージを受け取るかのどちらかの選択に迫られます。

システム定義の関数に依存しない3番目の選択肢は、日付の算術にTeradata Database定義のカレンダ ビューを使用することです。