• ベストアンサー

選択クエリの抽出条件(日付の場合)

Access2002 windows2000 日付のフィールドから選択クエリを使って、或る年度のデータを抽出するとき抽出条件に1月1日から12月31日までを入力しています。 例えば2001年のデータを抽出する場合は 抽出条件に Between #2001/01/01# And #2001/12/31# と入力しています。 これは「2001年1月1日から2001年12月31日までに該当するデータを抽出しなさい」という事ですが、年度を指定する場合は1月1日から12月31日までという事は決まっているので、もっと簡単に抽出条件を入力する方法はありませんか?

  • siba10
  • お礼率66% (800/1201)

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

  • ベストアンサー
回答No.1

Year(フィールド名)=2001 でいかがですか? クエリのフィールド名に 式1:Year([フィールド名A]) 抽出条件に 2001 抽出条件に関数を含めると、検索時間がかかりますので、 基本的には、すでにかかれていらっしゃるBetweenを使った方がよろしいかと思います。

siba10
質問者

お礼

早速ご回答いただきありがとうございます。 やはり検索に時間がかかるのはマズイのでBetweenを使います。

その他の回答 (3)

回答No.4

簡単に、と言うよりは、フレキシブルに抽出条件を指定した方が、使い易いのではないですか? Between[抽出開始]and[抽出終] こんな具合に、パラメーター設定してやれば、年を省略して、1/1と入力すると今年になりますね 抽出条件を固定する必要があるなら、この方法は、却って面倒でしょうけどねぇ

回答No.3

簡単に、と言うよりは、フレキシブルに抽出条件を指定した方が、使い易いのではないですか? etween[抽出開始]and[抽出終] こんな具合に、パラメーター設定してやれば、年を省略して、1/1と入力すると今年になりますね 抽出条件を固定する必要があるなら、この方法は、却って面倒でしょうけどねぇ

  • miz-fuyu
  • ベストアンサー率8% (1/12)
回答No.2

Access2002は使用したことは無いのでもっとスマートなやり方があるかもしれませんがAccess97は使用していましたので参考にしてください。 この場合は 現在使用しておられるとおり Between #2001/01/01# And #2001/12/31# かもしくは WHERE 日付 >= #2001/01/01# And 日付 <= #2001/12/31# がもっとも有効ではないかと思います。 SQL文的に簡単にしようと思えば SELECT * FROM テーブル名 WHERE Year(日付)=2002; が簡単かと思えますが…Year関数を使用するためテーブルのデータ量にしたがってデータ抽出が遅くなるのであまりお勧めは出来ません。 数百件程度のデータであればほとんど体感では解らないと思いますが…。 まぁ参考にしてみてください。

関連するQ&A

  • ACCESS2000 クエリの抽出条件

    フィールドに無作為に年月日が入力されているとします。 クエリの抽出条件に>2008/1/1と入力すると「2008年1月1日よりも新しい日付のレコード」を選択できます。 新しい日付の上位25までを選択するためには、抽出条件になんと入力したらいいのでしょうか。あまりにも基本的な質問かもしれませんが、お時間の許す方にお願いします。

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • クエリでの抽出条件について

    クエリでの抽出条件について クエリで納品がまだ済んでいない物件について、抽出期間を設定して抽出したいのですが、うまくいかず教えてください。 抽出したいフィールドは、[納品日]、[部署]、[変更]の三つです。 フィールド[変更]は、[納品日]が変更になることがあるので、[納品日変更]というフィールドに日付が入っていたら、[変更]に[納品日変更]の日付が入るように、[納品日変更]に何も入っていなかったら、[変更]に[納品日]の日付が入るように、判定式を入れています。 [変更]の動作は、目的通りになっており問題無いのですが、いざ[納品日]、[部署]、[変更]で抽出条件を入れるとうまくいきません。 抽出条件の所に [納品日]には、Is Null [部署]には、抽出したい部署名 [変更]には、Between #2010/04/01# And #2010/05/31# それぞれAndで組んで入れていますが、何も抽出されません。 [納品日]の、Is Null と [部署]の、抽出したい部署名 のふたつだけでやると、[納品日][部署]での抽出は動作します。 しかし、この二つに[変更]をプラスし、期間を追加するとダメなようです。 [変更]のように、判定式で作ったフィールドは、抽出条件に使ってはいけないのでしょうか? それとも抽出条件のAndは二つまでとか制限があるのでしょうか? 全く別の基本的な問題が原因だと思うのですが、教えて頂きたく。

  • クエリで日付の抽出条件

    アクセスのクエリで日付の条件抽出をしたいのです。シャープ(#)が日付のリテラル値ということまではつき止めたのですが、ここで問題発生です。 文字列には*や?のような便利な文字が使えるのに、日付で使おうとするとエラーになってしまいます。 例えば#01/05/2?# のように2001年5月20日~29日を抽出しろ、としても出来ません。 日付抽出には*や?のような文字はないんでしょうか? どうしてもないようなら関数でもしょうがないのですが、関数だと#01/1?/?3# (2001年10月~12月のうち、03、13、23日を抽出)みたいな複雑な命令が(簡単には)出来ないような気がするんです。 どなたかお助け下さい。

  • クエリーの抽出条件について

    「作表条件」というフォームにテキストボックスとして「日付1」、「日付2」を設置しています。 元のテーブルには「日付」という項目があり、「日付1」から「日付2」までのデータを抽出するため、 クエリの条件式に Between Nz([Forms]![作表条件]![日付1],#1800/01/01#) And Nz([Forms]![作表条件]![日付2],#9999/12/31#) と記述しています。 ただ、元のテーブルの日付がNULL値の場合があり、その場合「日付1」および「日付2」が空欄だとNULL値のレコードが抽出されません。 「日付」がNULLの場合でも抽出できるようにするには、どのようにすればよいでしょうか? どなたか教えてください。

  • パラメータクエリで日付を条件に抽出したい

    ・・・のですが、(○月○日より以前であればという意味で)条件のところに   <[日付を入力してください] として、パラメータに「2004/10/4」と入力すれば問題なく抽出しますが、これを「04/10/4」と入力して抽出させたいときにはどのようにすればいいでしょうか? この日付の入っているフィールドのプロパティは書式を「yy/mm/dd」にし、実際にそのように表示されています。 何か他に問題があるのでしょうか?

  • Accessでの日付の表示と抽出

    (1)日付型の連結テキストボックスに入力し、データを保存していきたいのですが、入力するとき"2003"と年度だけ入力するだけで、"2003/10/26"と保存されていくようにしたいのですが、どのようにしたらテキストボックスに年度だけの表示&入力にできますでしょうか。 (2)クエリの年度のフィールドにおいて、現在の年度を抽出条件に入力して抽出したいのですが、抽出条件欄にどのように入力すれば現在の年度がとれますでしょうか? 大変初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

  • 集計クエリでの抽出条件

    アクセスのクロス集計で質問なのですが・・・ 日付ごとの集計を行いたいのですが日付が21日締めで行いたいのです。 フォームで年と月を入れるとその月の集計を行いたいのです。 (例:フォームの日付入力2008/01と入力→集計クエリで2007/12/21~2008/01/20までの集計) この場合、抽出条件はどのように行えばよいのでしょうか

  • アクセス200にて日付の抽出を行いたい

    抽出をしたい、フィールドには2005年度から2007年度までの西暦で入力されています。 例2007/5/31 2005/12/1 2006/8/25 . . . . その中で日付が1日以外のものを抽出して、全てを一括でクエリーで変更をしたいのです。よろしくお願いします。

  • クエリの抽出条件

    アクセス2003/2007のクエリの抽出条件について テーブル名:履歴 フィールド1:名前 フィールド2:履歴No フィールド3:履歴の内容 フィールド4:日付 とあります。 履歴Noは0の人、1~3まである人、1~10まである人と様々。 指定した名前毎に「履歴Noの最大値から3レコードを抽出してレポートにしたいです。 下記のようにしてみました。 Between Val(DMax("履歴No","履歴"))-2 And Val(DMax("履歴No","履歴")) これでは抽出出来ませんでした。 試しに Between 3-2 And DMax("履歴No","履歴") と直接引き算の式を入れると抽出されました。 ※Valはあってもなくても同じでした。 「履歴Noの最大値から3レコードを抽出」をうまく出来る方法は無いでしょうか。 よろしくお願いします。

専門家に質問してみよう