• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスのクエリで出生時~小学校就学前を抽出)

アクセスのクエリで出生時~小学校就学前を抽出

このQ&Aのポイント
  • アクセスのクエリで出生時~小学校就学前のデータを抽出する方法を教えてください。
  • 抽出条件1では、出生時から小学校就学前(6歳に達した最初の3月31日まで)のデータを抽出します。
  • 抽出条件2では、小学生から中学生(4月1日時点で6歳以上で、15歳に達した最初の3月31日まで)のデータを抽出します。

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

  • ベストアンサー
  • hogya
  • ベストアンサー率67% (49/73)
回答No.2

質問は >日付型で作成してなく、年齢の出し方も分かりません。 ということでよろしいでしょうか? まず、下記の列を追加します。これは生年月日をまとめて西暦になおしたものです。 生年月日:Format([年号] & [生年] & "年" & [月] & "月" & [日] & "日", "yyyy/mm/dd") 次に、下記の列を追加します。 これは、「年齢計算に関する法律」によって誕生日の前日に満年齢に達することになっているためで、学校教育法の第22条の就学の基準では「子女の満六才に達した日の翌日以降における最初の学年の初から」となっているためです。もし、この年齢ではなく、当日に満年齢になる計算をお望みの場合は、「Date()」だけに修正すればよいです。(基準日がわからないので、動かした当日にしています) 基準日:DateAdd("d",+1,Date()) 最後に、下記の列を追加します。 年齢:IIf(Format(生年月日,"mm/dd")>Format(基準日,"mm/dd"), DateDiff("yyyy",生年月日,基準日)-1, DateDiff("yyyy",生年月日,基準日)) 上記で年齢の出し方は大体分かるかと思います。 あとは年齢をもとに条件にあう列を追加していくことになるか、上記の年齢計算自体を修正するかになると思います。

yy-sakura
質問者

お礼

hogya 様 回答をありがとうございます。 下記で解決しました。 【抽出1】 SELECT * FROM 顧客 WHERE DateValue([年号] & [生年] & "/" & [月] & "/" & [日]) BETWEEN DateSerial(Year(Date()) -15, 4, 2) AND DateSerial(Year(Date()) -6, 4, 1); 【抽出2】 SELECT * FROM 顧客 WHERE DateValue([年号] & [生年] & "/" & [月] & "/" & [日]) > DateSerial(Year(Date()) -6, 4, 1); SELECT * FROM Q_患者マスターレセプトNEW吉野_南関町ダミー入力 WHERE DateValue([年号] & [生年] & "/" & [月] & "/" & [日]) BETWEEN DateSerial(Year(Date()) -15, 4, 2) AND DateSerial(Year(Date()) -6, 4, 1);

その他の回答 (1)

回答No.1

内部で年齢を計算する関数つくると思います。僕なら。 その結果を比較する。 そういうことでいかがでしょう?

yy-sakura
質問者

お礼

groovyrealityx 様 回答をありがとうございます。 解決しました。

yy-sakura
質問者

補足

groovyrealityx 様 回答ありがとうございます。 日付型に変換の方法を調べたのですがわかりませんでした。 また、小学校就学前(6歳に達した最初の3月31日まで)なども分かりません。 よろしくお願い致します。

関連するQ&A