• ベストアンサー

一定期間に該当するレコードだけを抽出するには?

次の様なイベントテーブルがあります。 +id--+掲載開始日+掲載終了日+comment |0001|2004-01-01|2004-01-15|年始売出し この中から、指定した日付(td)が該当するレコードを抽出したいのですが、次の様なクエリを書くと該当レコードがでてきません。 select * from table where 掲載開始日 <=td and 掲載終了日 >=td date型による比較をしているのですが、なにか考え違いをしているのでしょうか?宜しくお願いします。

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

  • ベストアンサー
  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

日付は文字列ですので、数値にして演算した方が正確な値が取れると思います。 リファレンスブックに関数が載っていますのでしらべてみてください。

blackbrain
質問者

お礼

日付は文字列の一言で select * from table where 掲載開始日 <='td' and 掲載終了日 >='td' としてみましたところ正常に動作するようになりました。 数値化することも考えたのですが、直感的にレコード内容を確認できるdate型を採用しました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【Access】条件に該当する日付のレコードを抽出する方法について

    下記のテーブルがある場合、2002/03/10と入力すると、 ID=2のレコードを抽出したいのですが、やり方がわかりませんでした。 【テーブル(TABLE)の中身】 ID 開始日付  終了日付 1 2001/01/11 2002/02/12 2 2002/02/11 2002/03/12 3 2003/03/11 2002/04/12 テーブルの日付の列が1つ、入力する日付が2つの場合、 Betweenを使えばよいと思うのですが、 テーブルの日付の列が2つ、入力する日付が1つで、 テーブルの開始日付と終了日付の間に入力日付がある列を抽出する場合、 どうすればよいか分かりませんでした。 その為、何か良い手をご存知の方がいらっしゃいましたら、アドバイスをいただければと思います。 よろしくお願いします。

  • accessで複数条件でレコード抽出

    選択クエリにLike~で始まる条件1から条件6までを設定し、抽出フォームを作りましたが、全レコードの中から抽出されません。条件に該当するレコードが何件か抽出されないのです。どうすればいいでしょうか

  • SELECT FOR UPDATE で該当レコードがなかった場合

    SELECT FOR UPDATE ですが、該当レコードのみ ロックすると思うんですが、 該当レコードがない場合は、 ロックできないんでしょうか? たとえば、(COLUMN_BBB が PK として) SELECT * FROM TABLE_AAA WHERE TABLE_AAA.COLUMN_BBB = 'BBB' FOR UPDATE で、そもそも SELECT * FROM TABLE_AAA WHERE TABLE_AAA.COLUMN_BBB = 'BBB' となるレコードがない場合でも、 他トランザクションによる 該当レコードの INSERT を排他防御できるのか無理なのか、 教えていただけたらありがたいです。 すみません、時間的余裕があまりないので、 (すぐに回答ほしいです)でアップします。

  • ACCESSである数字が出なかった時、次回のレコードを抽出したいのですが

    1~19までの数字が書かれた19枚のカードから5枚を同時に引き、 記録していくデータベースを作成するとき、 A.一の位(1~9)が1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ B.十の位(10~19)1つも出なかった時の次回記録(次行)のレコードを抽出するクエリ 上記2つのクエリを作りたいのですが… (記録テーブル) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 ---------------------------------- (1)    1    4    5    7    9 (2)    1    2    3    10    12 (3)    10   12    13   16    18 (4)    1    2    3    4    5 (5)    5    6    7    15    16 上記の記録の時 A.一の位(1~9)が1つも出なかった時に該当するのは回数(3)なので その次回にあたる回数(4)を抽出 (クエリ1) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (4)    1    2    3    4    5 B.十の位(10~19)1つも出なかった時に該当するのは回数(1)と回数(4)なので それぞれの次回にあたる回数(2)、回数(5)を抽出 (クエリ2) 回数 1枚目 2枚目 3枚目 4枚目 5枚目 -------------------------------------- (2)    1    2    3    10    12 (5)    5    6    7    15    16 といったように 一の位が1つも出なかった次回のレコード、 十の位が1つも出なかった次回のレコードを 抽出するクエリ(SQL?)をそれぞれ 作成するにはどうすればよいのでしょうか? ご回答、よろしくお願いします。

  • (ACCESS)出た数字ごとに次回のレコードを抽出したいのですが…

    1~6までの数字が書かれた6枚のカードから3枚引き、 出たカードの数字を記録していく時 1,2,3,4,5,6それぞれの数字が出た次回(次行)のレコードを 抽出するクエリを作りたいのですが… (記録テーブル) 回数 1枚目 2枚目 3枚目 ---------------------------- (1)   1    2    6 (2)   2    5    6 (3)   1    4    5 (4)   3    5    6 上記の記録のとき、 1なら 1が出た次回にあたる、(2)回目と(4)回目のレコードを抽出。 ・1が出た次回のレコードを全て抽出 回数 1枚目 2枚目 3枚目 ---------------------------- (2)   2    5     6 (4)   3    4     5 2なら 2が出た次回にあたる(2)回目、(3)回目のレコードを抽出 ・2が出た次回のレコードを全て抽出 回数 1枚目 2枚目 3枚目 ---------------------------- (2)   2    5     6 (3)   1    4     5 3は今の所該当なし 4なら 4が出た次回にあたる(4)回目のレコードを抽出 5なら 5が出た次回にあたる(3)回目のレコードを抽出 6なら 6が出た次回にあたる、(2)回目、(3)回目のレコードを抽出。 といったように 1~6の数字をそれぞれ基準にして その数字が出た次回のレコードを抽出するクエリ(SQL文?)を 作成するにはどうすればよいのでしょうか?

  • 新規レコードから抽出されない。

    アクセス2007で簡単な名簿を作成しています。 テーブルは1個 レコードの内容は、名前、郵便番号、住所1、住所2,会社名、会社郵便番号、会社住所1,会社住所2,入力日、個人・職場 となっています。 フォーム 入力と閲覧を兼ねたフォームを1個作成しています。 クエリー 選択クエリーを2個作っています。 【選択クエリー個人】はレコード「個人」を抽出条件を「個人」としています。 【選択クエリー職場】はレコード「職場」を抽出条件を「職場」としています。 クエリーでは、登録が個人か職場を選択出来るようにしています。 テーブルには、手元にあったエクセルのデータ(xlsx)を読み込ませました。 この時点では、【選択クエリー個人】【選択クエリー職場】どちらのクエリーでも希望通りのデータが抽出出来ました。 実際の運用を初めフォームから入力を始めた所、新規に入力したデータが【選択クエリー個人】【選択クエリー職場】個々のクエリーで抽出されない事に気がつきました。 確認した事 テーブルを確認した所、データは全てテーブルに入力されている。 テーブルで「個人・職場」の列でフィルタを掛けると、新規入力分が抽出されない。 なぜ抽出されないかを知りたい。 入力フォームにて 「個人・職場」の部分はコンボボックスにしています。 テーブルにて 入力フォームを利用せず、テーブルに直接データを入力してもフィルタで抽出されません。 対策 テーブルの内容をいったん全てを「テキスト」でエクスポートしました。 エクスポートしたデータには、フォームから入力したデータも含まれています。 テーブルをコピーして、貼り付けの際「テーブルの構造みの」として新規テーブルを作成。 新規作成したテーブルにエクスポートした「テキスト」データを読み込み。 エクスポートしたテーブルは削除し新規作成したテーブルを同じ名称に変更した。 上記対策を行った後フォームから新規データ入力後、テーブルのフィルタで抽出されるようになり、クエリーで抽出されるようになりました。旧テーブルの時に入力したデータも抽出されます。 アクセスにデータをインポートする際にエクセルのデータとテキストでは違い有るのでしょうか。 上記の対策を行いましたが、この状態で運用して問題ないでしょうか。 同じような経験された方がおればアドバイス頂ければ嬉しく思います。

  • フォームからクエリの抽出期間を指定するにあたって

    フォームのテキストボックス(開始日付,終了日付)に入力された期間内の レコードをクエリで抽出するために、以下のような抽出条件を設定しています。 Between [Forms]![フォーム1]![from date] And [Forms]![フォーム1]![終了日付] ここまでは問題なく出来ています。 ですが、例えばテキストボックスに何も入力していないときに、 全ての期間から全件表示させるような方法はありませんでしょうか? IIf(IsNull([Forms]![フォーム1]![開始日付]),True,~ というような形で、IIfとIsNullの組み合わせも考えたのですが、 日付は直接フィールドでは無く抽出条件のため、 Trueより後が設定できずに悩んでおります。 出来ればVBAは使いたくないのですが、 何か良い方法はありませんでしょうか?

  • 期間を抽出する方法について

    データに賞味期限(開始)、賞味期限(終了)があります。 基準日を元にデータの賞味期限内に該当するデータを抽出したいと思いますが、どのような条件で抽出することが出来ますでしょうか? ご教授頂けると助かります。宜しくお願いします。 【例】 基準日:2021/05/01 希望する抽出データ 商品 賞味期限(開始)賞味期限(終了) A  2021/05/26   Null B  2021/05/10   Null 【データ】 商品 賞味期限(開始)賞味期限(終了) A  2021/05/26   Null B  2021/05/10   Null C  2021/04/01   2021/04/30 D  2021/03/15   Null E  2021/03/01   2021/03/14 以上です。

  • フィールドにテキストしか入ってないレコードの抽出

    ハイパーリンク型のフィールドにテキストしか入ってないレコードを取り出したいです。 1レコード目が 表示文字列:http://jp.msn.com アドレス:http://jp.msn.com (クリックしたらURLが開く) 2レコード目が 表示文字列:http://jp.msn.com アドレス:null (クリックしても何も起きない) の二つのレコードがあります。 クエリで2レコード目のように ハイパーリンク型のフィールドなのに、表示文字列しか入ってないレコードを抜き出したいのですが やり方がわかりません。 クエリの抽出条件に Not Like "*#*" を入れてもどちらも該当してしまいます。 ハイパーリンク型のフィールドのアドレスがNullのレコードの抜き出し方を教えてください。 よろしくお願いいたします。 (当方access2003です)

  • VBA フォームを使って、期間でレコードを抽出するには?(Excel2003)

    いつも助けていただきありがとうございます。 再質問です。(内容をまとめました。) Excel2003でデータベースを作成しました。 「日付」(B列)のところには、2008/11/18という形式で入力しています。 VBAで抽出用フォームから「○○○○年○月○日~○○○○年○月○日までを抽出」として、 該当レコードを抽出するにはどうしたらよいでしょうか? いろいろ試してはみたのですが、よい方法・アイディアができませんでした。 VBA初心者です。よろしくお願いします。 ちなみに試してみたのは、 期間抽出用フォームで、期間の始めと終わりの西暦・月・日をそれぞれ入力すると、いったんそれぞれのセルに入力され、 v5(開始月日用のセル)=T4&"/"&U4&"/"&V4(西暦・月・日がいったん入るセル) t5(終了月日用のセル)=W4&"/"&X4&"/"&Y4 としました。(表示では2008/11/19となりました。) そして、 Selection.AutoFilter Selection.AutoFilter Field:=2, Criteria1:=">=range("v5")", Operator:=xlAnd _ , Criteria2:="<=range("y5")" としたところ、エラーになりました。 どのように修正すればよいでしょうか?