予期しない結果
1 か月には 28、29、30、または 31 日を含めることができます。
1 年は 365 日または 366 日を含めることができます。これらの不整合のために、次のような命令では予期しない結果となる場合があります。
- 日付に月の 29 日、30 日、31 日を指定しての月の数の加算または減算 (あるいは月単位の期間の計算)
- 2 月 29 日の日付が指定されている年の数の加算または減算 (あるいは年単位での期間の計算)
使用される規則は次のとおりです。
- 月または年を加算ないしは減算する時、日の部分は変更されないままということも起こりえます。 例えば、2000-03-15 + %MONTHS(1) は 2000-04-15 となります。
- 加算または減算によって実在しない日付が生成された場合 (例えば 4 月 31 日) は、代わりにその月の最後の日付が使用されます。
- 日の部分を変更する月または年の命令では、逆に戻すことはできません。例えば、2000-03-31 + %MONTHS(1) は
2000-04-30 であり、日が 31 から 30 に変更されます。1 か月を減算しても、元の
2000-03-31 に戻すことはできません。
命令 2000-03-31 + %MONTHS(1) - %MONTHS(1) は 2000-03-30 になります。
- 2 つの日付の間の期間は、2 つめの日付から 1 か月を引くと 1 つめの日付になる場合に 1 か月になります。例えば、2000-04-30 - %MONTHS(1) は (2000-03-31 ではなく) 2000-03-30 であるため、2000-03-31 と 2000-04-30 との間の期間は月単位 (端数切り捨て) では 0 となります。