• ベストアンサー

アクセスで、フィールド間の期間を求めたい。

アクセス2000を使っています、同一テーブル内、フィールド別々に入社日と退社日があり入社日には2003/4/1と入力されて居り、退社日には2005/9/30と入っています、退社日までの勤務日数を、何年何ヶ月何日で求めたいです、退社未記入の場合は、今日現在までの勤務日数を、何年何ヶ月何日で求めたいです、

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

  • ベストアンサー
noname#97916
noname#97916
回答No.1

勤務日数: DateDiff("yyyy",[退社日],iif([退社日] is null,now(),[退社日]))+(Format([退社日],"mmdd")>Format(iif([退社日] is null,now(),[退社日]),"mmdd")) & "年" &DateDiff("m",[退社日],iif([退社日] is null,now(),[退社日]))-(DateDiff("yyyy",[退社日],iif([退社日] is null,now(),[退社日]))+(Format([退社日],"mmdd")>Format(iif([退社日] is null,now(),[退社日]),"mmdd")))*12+ (Day([退社日])>Day(iif([退社日] is null,now(),[退社日]))) & "ケ月"&DateDiff("d", DateSerial(Year(iif([退社日] is null,now(),[退社日])),Month(iif([退社日] is null,now(),[退社日]))+(Day([退社日])>Day(iif([退社日] is null,now(),[退社日]))),Day([入社日])), iif([退社日] is null,now(),[退社日])) & "日" これで求められると思います。

参考URL:
http://www.accessclub.jp/
okamoto151
質問者

お礼

有難うございました、貴殿が言われる通りクエリーに入力しましたら、日は計算されましたが、年、月の計算がされませんでした、私の入力が間違ってるのでしょうか?再度教えて頂ければ大変有難いです。

okamoto151
質問者

補足

ご回答頂き、誠に有難うございます。早速貴殿が言われる通り実施して見たいと思います、今後とも、宜しくご伝授頂きます様お願い致します。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#60992
noname#60992
回答No.2

齢を年月日で表示するために、以下のようなファンクションを作ってみたことがあります。 ソースが見つからないので、実験はしていませんがたぶん大丈夫と思います。 問題は日付をどういう計算にするかというところだと思います。 この式では、単に日付を引けない場合は、翌月一日から引いて月齢を1引くことにしてあります。 Function D_Diff(x,y) as string y1 = year(x) m1 = month(x) d1 = day(x) y2 = year(y) m2 = month(y) d2 = day(y) if d1<d2 then d1 = day(dateserial(y1,m1,0) m1 = m1 - 1 if m1< 1 then m1 = m1 + 12 y1 = y1 - 1 end if end if if m1<m2 then m1 = m1 + 12 y1 = y1 - 1 end if D_Diff = y1-y2 & "年" & m1-m2 & "ヶ月" & d1-d2 & "日" end function

okamoto151
質問者

お礼

有難うございました、参考にして やってみたいと思います。

すると、全ての回答が全文表示されます。

関連するQ&A