• ベストアンサー

アクセスでのクエリーの式について

Access2000のクエリーで、H10年7月25日(日付1)からH15年7月20日(日付2)(この2つの日付はそれぞれテーブルの各フィールドのデータです)の期間が71ヶ月(ここで、残りの21日はまだ1ヶ月立っていないので絶対に切り捨てをしなくてはならないとします。また、ひと月は31日だけではなく30日、28日も考える)と求める式を作りたいのですが方法が分かりませんので教えて下さい。DateDiff (“m”,[日付1],[日付2])とすると72ヶ月となってしまうので困っています。どうぞよろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.2

[日付1]の日にち > [日付2]の日にち の条件のとき、-1 することだと 思います。 その式は、次のようになります。論理式を使用しています。 DateDiff("m",[日付1],[日付2])+(Day([日付1])>Day([日付2])) 但し、2003/8/31 ~ 2003/9/30 等のように両方が月末の場合に、これを 1ヶ月と計算する場合は、次のようになると思います。 DateDiff("m",[日付1],[日付2])+IIf(Day([日付1]+1)*Day([日付2]+1)=1,0,(Day([日付1])>Day([日付2])))

lei
質問者

お礼

お返事頂きまして有難うございます。条件式にするところは分かりましたが、始まりの日付と終わりの日付は両入れなので例えば、1月21日から2月20日は1ヶ月、また1月31日も1ヶ月となりますが、問題ないでしょうか?わたしには関数の詳細と論理式が完全には分かりませんので解説していただけないでしょうか?また、1月30日から2月28日も1ヶ月となりますがこの場合はいかがでしょうか?両入れの場合は始まりの日付から1日を減らすか、終わりの日付に1日を加えることで対応できると思いますが?お手数ですがもう一度教えてください。よろしくお願いします。

その他の回答 (1)

  • akiaki2
  • ベストアンサー率59% (16/27)
回答No.1

iif(Day([日付1])>=Day([日付2]),DateDiff("m",[日付1],[日付2]),DateDiff("m",[日付1],[日付2])-1) なんてどうでしょう

lei
質問者

お礼

お返事頂きまして有難うございます。条件式にするところは分かりましたが、始まりの日付と終わりの日付は両入れなので例えば、1月21日から2月20日は1ヶ月、また1月31日も1ヶ月となりますが、問題ないでしょうか?わたしには関数の詳細と論理式が完全には分かりませんので解説していただけないでしょうか?また、1月30日から2月28日も1ヶ月となりますがこの場合はいかがでしょうか?両入れの場合は始まりの日付から1日を減らすか、終わりの日付に1日を加えることで対応できると思いますが?お手数ですがもう一度教えてください。よろしくお願いします。

関連するQ&A