ADD_MONTHSの直感的でない結果 - Teradata Database - Teradata Vantage NewSQL Engine - ADD_MONTHS、ADD_MONTHSの直感的でない結果。

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

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/pxz1544241488545.ditamap
dita:ditavalPath
ja-JP/pxz1544241488545.ditaval
dita:id
B035-1211
Product Category
Software
Teradata Vantage

ADD_MONTHSが行なう正規化のために、関数の結果の多くは直感的なものではなく、逆の計算の結果は必ずしも元通りにはなりません。例えば、例: 現在の日付から1ヶ月後の日付を問合わせるの結果を例: 現在の日付の前の月を問合わせるの結果と比較してください。

これは、この関数が常に有効な日付を生成するものの、必ずしも期待通りの日付を生成するわけではないためです。月の間隔の算術の正確さは、相対的にとらえるべき問題です。どんな定義も任意定義であって汎用化することはできないので、「期待通り」と言う語は、ADD_MONTHSの動作の説明としてより良い表現であるに過ぎません。

次の SELECT文は、有効であり期待通りの日付を戻します。

SELECT ADD_MONTHS ('1999-08-15' , 1);

この文は1999-09-15を戻します。

SELECT ADD_MONTHS ('1999-09-30' , -1);

この文は1999-08-30を戻します。

次のSELECT文は有効な日付を戻しますが、その「正確さ」は、どのように「1ヶ月」を定義するかにより異なります。

SELECT ADD_MONTHS ('1999-08-31' , 1);

この文は1999-09-30を戻します。これは、9月には30日までしかなく、正規化されていない1999-09-31という回答は有効な日付ではないからです。