dポイントプレゼントキャンペーン実施中!

FMv7です。

フィールドA-1-----フィールドA-2-----フィールドB-1-----フィールドB-2-----フィールドC
2007年     -----1月      -----2010年     -----5月      -----15日
全て数字のグローバル

上記のフィールドを参照して、2007年1月15日から2010年5月15日まで毎月C日のレコードをスクリプトで新規作成しようとしています。

フィールドD *グローバルでない*
・2007/1/15
・2007/2/15
  ~~
・2010/5/15

フィールドCが28日までだったら問題はありません。
が、Cが31日になると

・2007/1/31
・2007/2/31(Dが日付だと2007/3/3)
 ~~
となってしまいます。

これを
・2007/1/31
・2007/2/28(または29)
・2007/3/31
・2007/4/30
 ~~
と、繰上げた日にするいい方法はありませんか?




QNo.1560175(ファイルメーカー 一ヵ月後の日付をだすには?)に近い回答があったのですが、2007/2/28と入力すると2007/3/31になってしまうので。このときは2007/3/28がほしいのですが。
たぶんこの計算式の頭に28日以下だったらそのまま、という式を追加させたらいいのでしょうが、記述がわかりません。

A 回答 (1件)

私は5.5なので、適当に読み替えて下さい。



ある月の末日ってのは、翌月1日の前日として算出します。
date(月+1, 1, 年)-1

Cが月末を超える場合に月末に揃えちゃうなら、date(月, C, 年)と
上記の「小さい方」を採用すればいいので、

min(date(月, C, 年), date(月+1, 1, 年)-1)
でおしまい。
    • good
    • 0
この回答へのお礼

う!

ナント、翌月1日の前日でよかったんですね。

頭の固さに悲しい今日この頃です。

うまく自分のスクリプトに適応できました。

ありがとうございます。

お礼日時:2007/03/06 21:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す