MS ACCESS で経過月数を求める
SELECT IIF(DAY([終了日]) >= DAY([開始日] - 1), DATEDIFF("m", [開始日] - 1, [終了日]), DATEDIFF("m", [開始日] - 1, [終了日]) - 1 ) AS 月数;
開始日が2011年1月31日で、終了日が2011年2月1日の場合
SELECT IIF(DAY(#2011/02/01#) >= DAY(#2011/01/31# - 1), DATEDIFF("m", #2011/01/31# - 1, #2011/02/01#), DATEDIFF("m", #2011/01/31# - 1, #2011/02/01#) - 1 ) AS 月数;
「0」が返る。
開始日が2011年1月31日で、終了日が2011年2月27日の場合
SELECT IIF(DAY(#2011/02/27#) >= DAY(#2011/01/31# - 1), DATEDIFF("m", #2011/01/31# - 1, #2011/02/27#), DATEDIFF("m", #2011/01/31# - 1, #2011/02/27#) - 1 ) AS 月数;
「0」が返る。
開始日が2011年1月31日で、終了日が2011年2月28日の場合
SELECT IIF(DAY(#2011/02/28#) >= DAY(#2011/01/31# - 1), DATEDIFF("m", #2011/01/31# - 1, #2011/02/28#), DATEDIFF("m", #2011/01/31# - 1, #2011/02/28#) - 1 ) AS 月数;
「0」が返る。
開始日が2011年1月31日で、終了日が2011年3月1日の場合
SELECT IIF(DAY(#2011/03/01#) >= DAY(#2011/01/31# - 1), DATEDIFF("m", #2011/01/31# - 1, #2011/03/01#), DATEDIFF("m", #2011/01/31# - 1, #2011/03/01#) - 1 ) AS 月数;
「1」が返る。
開始日が2011年1月31日で、終了日が2011年3月30日の場合
SELECT IIF(DAY(#2011/03/30#) >= DAY(#2011/01/31# - 1), DATEDIFF("m", #2011/01/31# - 1, #2011/03/30#), DATEDIFF("m", #2011/01/31# - 1, #2011/03/30#) - 1 ) AS 月数;
「2」が返る。