アプリ版:「スタンプのみでお礼する」機能のリリースについて

Access2007において、[生年月日]をもとに本日の日付から「○歳○月」までを算出するには、どのような式を立てればいいのでしょうか?

ちなみに「○歳○月○日」まで算出するとなると、どうなりますか?

検索結果からだと、「○歳」まで算出する式はなんとなく分かったのですが…。

ご存知の方がいらっしゃったら是非教えて下さい。
宜しくお願い致します。

A 回答 (2件)

DateDiff関数


Excelに似た関数に Datedif関数がありますが パラメータ、計算結果に違いがあります。

Datedif(開始日,終了日,"Y") 満年数 Datedif(開始日,終了日,"YM") 年未満の月数

これに対してDateDiffでは
DateDiff("YYYY",開始日,終了日) 年未満の月、日の値を無視して年だけの差になります。
DateDiffには "YM" は使えませんので MOD 関数を使用することになります。
そのため DateDiff("M",開始日,終了日) で総月数を求め 年未満の月数を
月=総月数 MOD 12 とし 年=(総月数-月)/12 で 求めることも出来ますが

話が変わりますが、日付関数のパラメータにシリアル値がありますね
シリアル値は10進数と同じく連続した0を超える数値です。
1900年1月1日を1(10進数)としています。日進数とでも言うのでしょうか
10進数と違う点は桁上がり、桁下がりのです。
日の上の桁が月(大の月、小の月、うるう年により桁上がりの日数が異なります)
月の上の桁が年
日の下の桁が時、時の下の桁が分、分の下の桁が秒
こんなわけで シリアル値の差が期間(日数)ということになり、
この差を表示書式を日付にすると、年に1900が加えられた表示にになります。
このシリアル値の差よりYear関数、Month関数で年月を取り出したのがNo.1の回答です。

追伸、このシリアル値は、MicrosoftOfficeだけのものと限定してください。
コンピュータの元は2進数です。これをどのように発展させているのかは自分には分かりません
おそらく Mac UNIX では別の展開があると思います。
    • good
    • 0
この回答へのお礼

こんなに詳しく、突っ込んでご回答下さり、ありがとうございました。
ただ単に式を教えていただいただけでなかったことに、深く感謝致します。
本当にありがとうございました。

お礼日時:2010/04/22 22:51

生年月日から本日迄の経過日数を求め、これを年月に分解します。



経過日数:date()-[生年月日]
   年:year([経過日数])-1900
月:month([経過日数])

この回答への補足

ご回答ありがとうございます。

すみません、ほとんど素人なもので、あまりよく分かっていないのですが。

ご説明の内容はなんとなく理解しました。

ただ、これまで読んできた年齢の求め方の説明に使われていたのが、もっぱらDateDiff関数だったので、DateDiff関数を使わなくても算出できるのかなぁ、ということと(引き算なので同じ計算なのですか?)、教えて頂いた式をそのまま放り込んでいいのかなぁ、という、二つの疑問を持ちました。

試してみるのが一番の答えですね…。

補足日時:2010/04/10 15:10
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/04/20 06:04

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