過去の桐井戸端BBS (桐ver.9)
29520 3年後の同日の前日を求めたい katsuyoshi 2005/03/29-17:06
久しぶりにお世話になります。

項目1 契約始期日(日時型)
項目2 契約終期日(日時型)
項目2の項目計算式 #月数加算([項目1],36,1)
としましたが3年後の同日が値となります。
契約期間ですから3年後の同日の前日を求めたいのですが
計算式を教えて下さい。
よろしくお願いします。
29521 Re:日付の計算について 安斎 2005/03/29-19:21
記事番号29520へのコメント
こんにちは

項目2の計算式を
#日数加算(#月数加算([項目1],36,1),-1)
と単純に考えてしまいましたが……‥

閏年の時は、次のようになります。

項目1が閏年(2004年2月29日)の時、36月後  2007年2月28日となり
その1日前 2007年2月27日となってしまいます。

項目1が  2005年3月1日の時36月後  2008年3月1日となり
その1日前 2008年2月29日となります。

はずしていたら、スミマセン。  
29523 Re:日付の計算について 佐田 守弘 2005/03/29-21:51
記事番号29521へのコメント
katsuyoshiさん
基本的には安斎さんが#29521で書かれている考え方だろうと思います。

●閏年の場合
これは基本的にどちらで考えるのが正しいのでしょうね。
2月29日起算の3年後の同日を2月28日と見るか、3月1日と見るかです。
質問では3年後なので関係ないかと思いますが、一般的に言えば、同じ事が大の月と小の月でも起きます。
つまり、3か月後の同じ日の前日といったケースです。
たとえば8月31日起算の3か月後は、11月30日になるわけで、この前日とするのかどうかです。

「#月数加算」関数の2番目のパラメータに2を指定すれば、指定日がない場合、翌月の1日が戻ります。つまり、
 #日数加算(#月数加算([項目1],36,2),-1)
とします。2004年2月29日起算の3年後は、2007年3月1日となり、その前日が2007年2月28日になります。

●それ以外の方法として
もし2月29日だけを避けるのであれば、次の様な計算式もできるでしょう。
#条件選択(#月([項目1])=2 .and #日([項目1])=29
     ,#年数加算([項目1],3)
     .1
     ,#日数加算(#年数加算([項目1],3),-1)
     )
36か月後ではなくて3年後らしいので、「#年数加算」を使ってみました。

佐田守弘(KS-00119)
29527 Re:日付の計算について katsuyoshi 2005/03/30-16:37
記事番号29523へのコメント
安斎さん、佐田さんありがとうございました。

基本的には閏年に契約は結ばないようにしようと思っています。
実際の担当者と相談してから進めたいと思います。
またよろしくお願いします。

戻る