月のスカラー算術の問題 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLの日付/時刻関数と式

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/xmd1556127764262.ditamap
dita:ditavalPath
ja-JP/xmd1556127764262.ditaval
dita:id
B035-1211
Product Category
Software
Teradata Vantage

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

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

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

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

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