• ベストアンサー

Accessで年齢の計算

Access初心者です。 テーブルに"19851215"、"19860202"のように西暦と月日が連続したデータとなってるデータが保存されているとします。 クエリーで、現在の年齢に変換して表示させようと思っているのですがうまくできません。どなたか、詳しい方がいらっしゃいましたら教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.3

作業フィールドを使う形で。 提示の文字列の格納されているフィールド名を[DtTxt]とします。 順に「文字列を日付として認識できる形に変換」、「数え年齢」、「満年齢」です。 Brthdy: DateValue(Format([DtTxt],"0000\/00\/00")) thYr: DateDiff("yyyy",[Brthdy],Now()) Ag: IIf(Format([Brthdy],"mmdd")<Format(Now(),"mmdd"),[thYr]-1,[thYr]) #CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。

Excel_VBA
質問者

お礼

返答有難うございます。 早速試してみたところうまくいきました。作業フィールドを変数のように使えば出来るのですね?本当に有難うございました。今後とも宜しくお願い致します。

その他の回答 (3)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.4

>CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。 括弧がおかしかったみたいですね 修正です(今度はテスト済みです) 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4)>Format(Date(),"mmdd")) & "才"

Excel_VBA
質問者

お礼

実は、私も試してみたところ括弧の数が多いとAccessに怒られて、うまくいかずに悩んでいたのです。 訂正版を現時点ではためしていませんが、帰宅したら早速試してみたいと思います。 本当に有難うございました。今後とも宜しくお願い致します。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

>"19851215"、"19860202" はAccessにとっては単なる数字で日付ではありませんから 関数で日付に変換してやらなければなりません フィールド名が誕生日だとして 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4))>Format(Date(),"mmdd")) & "才"

  • QES
  • ベストアンサー率29% (758/2561)
回答No.1

テーブルのフィールド名を生年月日に、データ型を日付/時刻型にしておきます。 クエリのデザインで、年齢:DateDiff("yyyy",[生年月日],Date())としたら、現在の年齢が表示されます。

Excel_VBA
質問者

お礼

ご回答有難うございます。 今回は、既にデータが入っていたので、データ型を変えようとしたところデータが失われるとAccessに怒られたので、泣く泣く諦めました。 次回からは、試してみたいと思います。 今後とも宜しくお願い致します。

関連するQ&A

専門家に質問してみよう