Accessのクエリで日付の抽出条件についてお探しですね。

広告

Accessで日付を条件にしてデータを抽出する方法を分かりやすく解説

Accessで売上管理や顧客管理をしていると、必ずぶつかるのが「日付を使ったデータ抽出」です。

「今月のデータだけ見たい」「特定の日のデータを出したい」と思っても、設定方法が分からなくてエラーが出てしまう…そんな経験はありませんか?この記事では、Accessのクエリで日付を条件にする基本から、期間指定、「今日」を使った自動化、さらには実務で役立つ「年月だけ」で抽出するコツまで、丁寧に説明していきます。

Accessで日付を抽出するときの基本ルール

Accessのクエリで日付を扱うとき、初心者の方が最もつまずきやすいのが「記号の使い方」です。

普通の文字(テキスト)を抽出するときはダブルクォーテーション(“)で囲みますが、**日付の場合は必ずシャープ(#)で囲む**必要があります。

例えば、「2023年4月1日」のデータを抽出したいときは、クエリの抽出条件に「**#2023/04/01#**」と入力します。

この「#」記号があることで、Accessは「これは日付データですよ」と正しく理解してくれるんです。

もしこの「#」を付け忘れたり、間違えて「”」で囲んでしまうと、Accessは日付として認識できず、データが抽出されなかったり、エラーメッセージが表示されたりします。

特にExcelに慣れている方は、そのまま「2023/4/1」と入力してしまいがちなので注意してください。

ちなみに、Accessのバージョンによっては、「2023/04/01」と入力してEnterキーを押すと、自動的に「#」を付けてくれることもあります。

でも、思わぬ変換ミスを防ぐために、最初から自分で「#」を入力する習慣をつけておくのがおすすめです。

あと、もう一つ大事なポイントがあります。

抽出したいフィールドの「データ型」が、テーブルの設計時に正しく「日付/時刻型」に設定されているかも確認してください。

もしデータ型が「短いテキスト」などになっていると、「#」を使っても型が合わずにエラーになってしまいます。

うまくいかないときは、まずテーブルのデザインビューを開いて、データ型をチェックしてみましょう。

期間を指定してデータを抽出する方法

実際の仕事では、1日だけのデータを見るよりも、「先月の1日から末日まで」「特定の期間の売上」といった感じで、**期間を指定して抽出する**ケースの方が断然多いですよね。

Accessで期間を指定するときは、不等号(>= や <=)と「And」を組み合わせて条件を書きます。 よく使う書き方をまとめてみました。 ・「**>=#2023/04/01#**」→ 2023年4月1日以降(4月1日を含む)
・「**<=#2023/04/30#**」→ 2023年4月30日以前(4月30日を含む) ・「**>=#2023/04/01# And <=#2023/04/30#**」→ 2023年4月1日から4月30日まで このように「And」で2つの条件をつなぐことで、始まりと終わりの日付を指定した範囲抽出ができます。 ここで注意したいのが、不等号の向きと「=」の有無です。 「**>=**」は「その日を含む」という意味ですが、もし「>#2023/04/01#」と「=」を外してしまうと、4月2日以降になってしまい、4月1日が抜けてしまいます。

月次の集計などでは1日や末日が抜けると数字が合わなくなるので、必ず「>=」「<=」を使うようにしましょう。 もう一つ、便利な書き方として「**Between...And...**」という方法もあります。 抽出条件に「**Between #2023/04/01# And #2023/04/30#**」と入力しても、同じように4月1日から4月30日までのデータが抽出できます。 Betweenの方が「この期間」という意味が分かりやすいので、こちらを好んで使う人も多いです。 どちらを使っても結果は同じなので、自分が分かりやすい方を選んでください。

Date関数で「今日」を基準に自動抽出する

ここまでは「2023年4月1日」のように、具体的な日付を直接入力する方法でした。

でもこれだと、「毎日その日のデータを見たい」という場合、クエリを開くたびに日付を手作業で書き直さなきゃいけません。

面倒ですよね。

そんなときに便利なのが「**Date関数**」です。

Date関数は、パソコンの時計から「今日の日付」を自動的に取得してくれる機能です。

クエリの抽出条件に「**Date()**」と入力するだけで、そのクエリを実行した当日のデータだけが自動的に抽出されます。

明日開けば明日のデータ、来週開けば来週のデータ…という具合に、常に「今日」のデータが見られるようになります。

カッコ「()」は関数であることを示す記号なので、忘れずに付けてくださいね。

さらに、このDate関数は足し算・引き算と組み合わせると、もっと便利になります。

・「**Date()-1**」→ 昨日のデータ
・「**Date()+1**」→ 明日のデータ
・「**>=Date()-7**」→ 1週間前から今日までのデータ

このようにDate関数を基準にして日数を足し引きするだけで、いろんな期間指定が簡単にできちゃいます。

特に、納期管理やタスク管理をAccessでやっている場合、「今日までに対応しなきゃいけない未完了タスク(**<=Date()**)」や「明日が納期の案件(**Date()+1**)」を抽出するクエリを作っておくと、仕事の抜け漏れを防げて本当に便利です。 毎回手動で日付を打ち直す手間から解放されるので、Accessを単なるデータの保管場所から「業務効率化ツール」に変えるための必須テクニックと言えます。

「年月だけ」で特定の月を抽出するコツ

実務でよく聞かれる質問の一つが、「2023年4月のデータだけ見たいんだけど、年月だけで抽出できないの?」というものです。

テーブルには「2023/04/15」のように年月日が全部入っているのに、特定の月だけを抜き出したい…でも単純に「#2023/04#」と入力しても、Accessは認識してくれません。

年月だけで抽出するには、クエリでデータを加工したり、専用の関数を使ったりする必要があります。

代表的な方法は次の通りです。

・**Format関数**を使って「YYYY/MM」形式の文字列に変換して抽出する
・**Year関数とMonth関数**を組み合わせて、年と月をそれぞれ指定する
・月初めから月末までの**期間指定**で代用する

一番おすすめなのは、**Format関数を使う方法**です。

クエリのデザイングリッドの空いているフィールドに「**年月: Format([日付フィールド名], “yyyy/mm”)**」と入力します。

すると、元の年月日データが「2023/04」という文字列に変換された新しい列ができます。

その列の抽出条件に「**”2023/04″**」と入力すれば、その月のデータだけを絞り込めます。

この場合は文字列として扱うので、条件は「#」ではなく「”」で囲む点に注意してください。

よくある失敗例として、「テーブルの表示書式を年月(yyyy/mm)に変更したのに、うまく抽出できない」というケースがあります。

これは「見た目」と「中身」の違いが原因です。

テーブルのプロパティで書式だけを変えても、内部に保存されているデータは「2023/04/15」などの詳細な日付のままなんです。

だから、見た目は年月だけでも、実際のデータとの間でズレが起きてしまいます。

年月で集計や抽出をしたい場合は、見た目の書式に頼るのではなく、今回紹介したFormat関数や期間指定を使って、クエリ側でしっかり条件を設定するのが確実な方法です。

まとめ

いかがでしたか?日付を使った抽出は最初は難しく感じるかもしれませんが、基本のルールさえ覚えてしまえば、いろんな応用ができるようになります。

ぜひ実際に試してみてくださいね!

広告