Q&A 21
1ヶ月後の日付を求める方法
日付型の[日付]の項目値の1ヶ月後の日付を求める場合,例えば日付型の項目に以下のような式を設定します。
-
この式では, 1月1日 の1ヶ月後は 2月1日 になりますが, 3月31日 の 1ヶ月後は 5月1日 になってしまいます。これは, 4月31日 の様にありえない日付になる場合は,翌月の 1 日になるように DBPro 側で制御しているからです。しかしこのような場合でも,翌月の末日(4月30日)になるように式を工夫すると以下の様になります。
-
計算式の例
-
$基準日 := [日付], |
$Nヶ月 := 年月間隔'1ヶ月', |
$Nヶ月後 := $基準日+$Nヶ月, |
$基準日のNヶ月後末日 := #月末(#月初($基準日)+$Nヶ月), |
#条件(#月末($Nヶ月後) <= $基準日のNヶ月後末日 ,$Nヶ月後,$基準日のNヶ月後末日) |
- 式の説明
- 変数 $基準日 には,求める基点の日付が入ります。
- 変数 $Nヶ月 には,求めたい期間が入ります。この場合は1ヶ月間です。
- 変数 $Nヶ月後 には,DBProの仕様に沿った1ヶ月後の日付が入ります。3/31 の場合は 5/1 になります。
- 変数 $基準日のNヶ月後末日 には,基準日の月初から 1ヶ月後の月末の日付が入ります。3/31 の場合 4/30 になります。
- 単純な1ヶ月後末日と,月初からの1ヶ月後末日を比較して,前者が小さい場合は $Nヶ月後 をそうでない場合は $基準日のNヶ月後末日 を結果とします。
1ヶ月後以外の日付を求める場合は,式の2行目の 年月間隔'1ヶ月' を 年月間隔'3ヶ月'というように変えてください。
- 注意点
- 2月など月数の少ない月の場合以下のようになります。
-
2001年1月31日 | → | 2001年2月28日 |
2001年1月28日 | → | 2001年2月28日 |
2001年1月30日 | → | 2001年2月28日 |
-
となって 3/29〜3/31 は結果として得られません。
売掛販売などで,入金日を請求日の N ヶ月後の D 日にするというような場合は,「[FAQ00005]売上日から請求日,入金日を求める方法」を参考になさってください。