かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Google Spreadsheet 月末・月初の日付を求める・query に日付を使う

n月中のデータを query で一覧にしたい時などに割と使うアレ

月末・月初の日付を求める

EOMONTH を使う

EOMONTH(開始日, 月数)
起算日から指定した月数だけ前または後ろの月の最終日の日付を返します。

  • 開始日 - 結果を計算するための起点となる日付です。
  • 月数 - 開始日の前(負)または後ろ(正)の計算対象となる月数です。計算結果の月の最後の暦日が返されます。

使用例
EOMONTH(DATE(1969, 7, 20), 1) / EOMONTH(A2, 1) / EOMONTH(40909, -2)

cf. EOMONTH - Google ドキュメント エディタ ヘルプ

月末の日付

当月末なので下記で求められる

= EOMONTH(開始日, 0) // 開始日の月末の日付

月初の日付

先月末日 + 1日で求められる

= EOMONTH(開始日, -1) + 1 // 開始日の前月末 +1日 = 開始日の月初の日付

query の条件に日付を使う

Google Spreadsheet の query の条件に日付を使うには date 'YYYY-MM-DD' の形式にする必要がある
参考: Query Language Reference (Version 0.7)  |  Charts  |  Google for Developers

例えば A1 にある日付 2025/10/15 を条件にするなら下記のように TEXT を使い YYYY-MM-DD 形式に変換する必要がある

SELECT * WHERE Col1 < date '"& TEXT(A1, "YYYY-MM-DD") &"'

該当月 (月初〜月末) であることを条件にする

A1 セルに対象月となる日付が入っている場合下記のようになる

= query(
  'シート!'A:Z,
  "SELECT *
   WHERE A >= date '"& TEXT(EOMONTH(A1, -1) + 1, "YYYY-MM-DD") &"'
   AND A <= date '"& TEXT(EOMONTH(A1, 0), "YYYY-MM-DD") &"'"
)

まとめ

  • 月初日を返す関数はないので
    • 月初は EOMONTH(M, -1) で先月末を求め +1 する
  • query の条件に日付を使うには
    1. YYYY-MM-DD の文字列に変換する必要があること
    2. date 'YYYY-MM-DD' の形式である必要があること

おわり


[参考]