「1か月=30日」といった特別な取り決めがない限り、通常は5月1日の1月後は6月1日ですし、7月1日の1月前は6月1日です。対応する「日」がある限りその「日」に変わりはありません。DateAdd関数を用いて計算した場合も、当然このような結果となります。
では、5月31日の1月後とか、7月31日の1月前といったように、対応する「日」がない場合は何月何日になるのか、というとちょっと気になるところです。
右のようなテーブルをもとにやってみます。
DateAdd関数で1月後、1月前の日付をそれぞれを求めてみます(第1引数を「m」とする)。
結果はこうです。
要約すると
- 「月」の値は、必ずもとの月の前月または翌月
- 「日」の値は、その月(前月または翌月)に存在する日の中で、元の「日」の値に最も近いもの
ちなみに、第1引数を「q」あるいは「yyyy」とすることで四半期後(前)と1年後(前)の日付を求めた結果はこのようになります。なお、1年後(前)を求めるのは、うるう年の2月29日の扱いを知るため(だけ)です。
四半期後(前)については月が差が3、1年後(前)については月の差が12となるだけで、「日」の値については1月後(前)の場合と同様です。