• ベストアンサー

Accessの抽出条件 特定の期間だけを抽出

以下の様な三年間のデータを各期ごとに抽出したいのですが どのようにすれば良いでしょうか? 例:今年の場合 今期19/7~20/6 前期18/7~19/6 前々期17/7~18/6 今期の抽出例 y/x y=年 x=月 (現在の年月) 7≦x≦12→y/7~y+1/6=< 1≦x≦6→y-1/7~y/6=< このような形になると思うのですが論理式で、現在年月の使用方法が分かりません。 日数計算に使うDataは利用可能?なのでしょうか 宜しければ記述方法も教えてください。

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

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

>このような形になると思うのですが こんなややこしいことをする必要はありません 期首が7月だったら6ヶ月ずらして、年だけ取り出せば年度が求まります テーブルの日付フィールドが日付時刻型なら 年度:Year(DateAdd("m",-6,[日付]))

sskj
質問者

補足

前回はお世話になりました。 Yearで文字列を年に変換することが出来るのですね。 さらにDateAddを使い個別の年を出すわけですね。 前回に比べて大分Accessが分かってきました。 ありがとうございます。

その他の回答 (3)

noname#140971
noname#140971
回答No.3

Public Function DBP(ByVal K As Integer) As Date   DBP = DateSerial(DatePart("yyyy", "1988/7/1") + K, DatePart("m", "1988/7/1"), 1) End Function もしかしたら、第1期の開始日を間違っているかも・・・。 そこは、まあ、調節して下さい。

noname#140971
noname#140971
回答No.2

余り難しく考える必要はないのでは・・・。 [イミディエイト] ? DBP(19) 2008/07/01 ? DBP(20)-1 2009/06/30 このように、各会計期首日を求める DBP関数を作成すれば事足りるのでは・・・。 そうすれば、 XXXX BETWEEN '2008/07/01' AND '2009/06/30' と、特定の期間のデータを抽出できると思います。 Public Function DBP(ByVal K As Integer) As Date   DBP = DateSerial(DatePart("yyyy", "1989/7/1") + K, DatePart("m", "1989/7/1"), 1) End Function DBP関数にマジックナンバーとして"1989/7/1"を埋め込むのは関心しません。 そこは適当に改善するとして、こんな関数を用意すれば各会計期首日を指定できます。 >現在年月の使用方法が分かりません。 それは、色々と問題が出ると思いますよ。 「現在日=処理日」の等式は、常に100%成立することはないですよ。

sskj
質問者

補足

DBP関数?このような関数があるのですか・・・ 解説書の目録で探してみましたが見つかりませんでした。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

年単位の抽出なら、フィールド欄に下記のように追加して 年度:Year(Dateadd("m",-7,[日付のフィールド])) 抽出条件を Between Year(Dateadd("m",-43,Date()) And Year(Dateadd("m",-7,Date())

sskj
質問者

補足

構成エラーがでます。 私が勘違い?をしているのですかね・・・。

関連するQ&A

専門家に質問してみよう