GoogleスプレッドシートのQUERYで日付を条件にするときは、date ‘2026-10-01’のように、日付として条件を記述します。見た目が日付でも、文字列として保存されている列では同じ式で扱えない場合があります。
この記事では、10月分の記録を取り出す例で、固定日付、開始日・終了日のセル参照、時刻付きデータの違いを説明します。最初は小さな表で結果を確認し、その後に実務の範囲へ広げてください。
日付列と見出しをそろえる
A1:C6に次の表を用意します。A列はスプレッドシートが日付として認識する値、C列は数値として入力してください。
| A列:日付 | B列:担当 | C列:件数 |
|---|---|---|
| 2026/09/30 | 佐藤 | 2 |
| 2026/10/01 | 佐藤 | 3 |
| 2026/10/15 | 鈴木 | 5 |
| 2026/10/31 | 佐藤 | 4 |
| 2026/11/01 | 鈴木 | 1 |
QUERYの第3引数は見出し行の数です。この例ではA1:C6に見出しが1行あるので1を指定します。A2:C6だけを渡すなら0です。省略による推定を避けると、先頭行が想定外に扱われる問題を減らせます。
10月のデータを抽出する式
E1など、結果を展開できる空き領域に次の式を入力します。
=QUERY(A1:C6,"select * where A >= date '2026-10-01' and A < date '2026-11-01'",1)
10月1日・15日・31日の3行が抽出対象です。「開始日以上、翌月の初日未満」と書くと、月末の日数を数えずに期間を指定できます。9月30日と11月1日は含みません。
クエリ全体をダブルクォーテーションで囲み、その中の日付文字列をシングルクォーテーションで囲んでいます。日付の表記はyyyy-MM-ddです。構文の定義はGoogle公式のクエリ言語リファレンスを参照してください。
開始日と終了日をセルで指定する
H2に2026/10/01、I2に2026/10/31を日付として入力し、両端を含む範囲で抽出する場合です。結果の式は別の空き領域に置きます。
=QUERY(A1:C6,"select * where A >= date '"&TEXT(H2,"yyyy-mm-dd")&"' and A <= date '"&TEXT(I2,"yyyy-mm-dd")&"'",1)
H2やI2をそのまま文字列へつなぐと、日付の内部数値が条件へ入ることがあります。TEXTでクエリが受け取れる形式へ整えてから連結します。
入力欄が空白、終了日が開始日より前、日付が文字列になっているなどの場合も確認します。数式が長くなって分かりにくいときは、クエリ部分だけを別セルへ出し、完成した条件文を読むと、引用符の不足や日付の違いを見つけやすくなります。
時刻付きのデータは、終了日の深夜を落とさない
フォームの回答日時など、A列に時刻まで含む場合は、日付だけの例と区別します。例えば10月31日18時の記録を含めるには、11月1日0時より前を条件にします。
=QUERY(A1:C1000,"select * where A >= datetime '2026-10-01 00:00:00' and A < datetime '2026-11-01 00:00:00'",1)
時刻付きの列が日時として認識されていることが前提です。「10月31日0時以下」としてしまうと、それより後の同日の記録が外れます。期間の最後を翌日の0時未満にする考え方は、日次集計でも使えます。
表示形式で時刻を隠しただけでは、値から時刻が消えるわけではありません。想定外の行が抜けた場合は、A列を日時表示にして実際の値を確認してください。
担当者の条件も加える
日付条件に加え、担当が佐藤の行だけを抽出する例です。
=QUERY(A1:C6,"select * where A >= date '2026-10-01' and A < date '2026-11-01' and B = '佐藤' order by A",1)
この表では10月1日と31日の2行になります。条件を増やす前に日付だけで期待どおりに抽出できることを確かめ、その後に担当や件数などを一つずつ追加します。
結果が空・一部だけ抜けるときの確認
- A列に、実際の日付と文字列の日付が混在していないか。
- 日付だけの列なのか、時刻まで含む列なのか。
- dateやdatetimeの指定と引用符が正しいか。
- 第3引数の見出し行数が入力範囲と合っているか。
- 追加した行が参照範囲に含まれているか。
- 抽出結果の展開先に既存データがないか。
QUERYは、一つの列に複数の型が混ざると、多数の型を基準にして少数側の値を空値として扱う仕様があります。詳細はQUERY関数の公式ヘルプを確認してください。表示形式を変えるだけでは、文字列が正しい日付へ変換されない場合があります。
集計へ進む前に境界の行を確かめる
開始日の前日、開始日、終了日、終了日の翌日の4種類を含む表で確認すると、期間の取り違えを見つけやすくなります。時刻付きなら終了日の昼や夜の記録も加えてください。
複数シートをまとめてから期間を絞りたい場合は、QUERYで複数シートを集計する方法を参照できます。配列を作って渡すと列指定がCol1などになるため、A列を指定する式と混ぜないようにしましょう。
