- ベストアンサー
Accessで年齢の計算
Access初心者です。 テーブルに"19851215"、"19860202"のように西暦と月日が連続したデータとなってるデータが保存されているとします。 クエリーで、現在の年齢に変換して表示させようと思っているのですがうまくできません。どなたか、詳しい方がいらっしゃいましたら教えてください。よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
作業フィールドを使う形で。 提示の文字列の格納されているフィールド名を[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で試してもうまくいかなかったので拙作も投稿しておきます。
その他の回答 (3)
- CHRONOS_0
- ベストアンサー率54% (457/838)
>CHRONOS_0さんの式を当方の2003で試してもうまくいかなかったので拙作も投稿しておきます。 括弧がおかしかったみたいですね 修正です(今度はテスト済みです) 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4)>Format(Date(),"mmdd")) & "才"
お礼
実は、私も試してみたところ括弧の数が多いとAccessに怒られて、うまくいかずに悩んでいたのです。 訂正版を現時点ではためしていませんが、帰宅したら早速試してみたいと思います。 本当に有難うございました。今後とも宜しくお願い致します。
- CHRONOS_0
- ベストアンサー率54% (457/838)
>"19851215"、"19860202" はAccessにとっては単なる数字で日付ではありませんから 関数で日付に変換してやらなければなりません フィールド名が誕生日だとして 年齢: DateDiff("yyyy",DateValue(Format([誕生日],"0000/00/00")),Date())+(Right([誕生日],4))>Format(Date(),"mmdd")) & "才"
- QES
- ベストアンサー率29% (758/2561)
テーブルのフィールド名を生年月日に、データ型を日付/時刻型にしておきます。 クエリのデザインで、年齢:DateDiff("yyyy",[生年月日],Date())としたら、現在の年齢が表示されます。
お礼
ご回答有難うございます。 今回は、既にデータが入っていたので、データ型を変えようとしたところデータが失われるとAccessに怒られたので、泣く泣く諦めました。 次回からは、試してみたいと思います。 今後とも宜しくお願い致します。
お礼
返答有難うございます。 早速試してみたところうまくいきました。作業フィールドを変数のように使えば出来るのですね?本当に有難うございました。今後とも宜しくお願い致します。