本文へスキップ
AZ Tools

日付範囲スプリッター

日付範囲を最大 50 個の等しいスライスに分割します — チャンク化されたレポート、スプリントカレンダー、月次コホート、リクエストごとに期間が制限される API のバックフィル、長期間にわたるバッチジョブなどに便利です。計算はミリ秒精度で行われます。期間を N 等分した後、各境界をローカルタイムゾーンの真夜中にスナップするため、日単位の出力が許す限りチャンクは均等になります。区間モードは各チャンクの開始・終了・日数を表示し、境界点モードはクエリやスクリプトにそのまま貼り付けられる N+1 個の分割日付だけを一覧にします。すべてブラウザ内で動作し、入力はローカルにのみ保存されます。 知っておきたい 2 つのセマンティクス:「終了日を含む」をオンにすると最終日は最後のチャンクに属します(「6 月 30 日まで」の自然な読み方)。オフにすると半開区間 [start, end) の分割になります。また区間モードでは各チャンクの終了が次のチャンクの開始と一致するため、連続する行が隙間も重複もなく範囲を敷き詰めます。

出力:
分割
  • #12026-08-21 → 2026-11-2091d
  • #22026-11-20 → 2027-02-2092d
  • #32027-02-20 → 2027-05-2291d
  • #42027-05-22 → 2027-08-2292d

境界はローカルタイムゾーンの真夜中にスナップされる。

使い方

  1. 開始日、終了日、欲しい区間数(1〜50)を選びます。
  2. 出力を選びます。区間モードは各チャンクを開始 → 終了と日数で、境界点モードは N+1 個の分割日付のみを表示します。
  3. 最終日を範囲に含めるなら「終了日を含む」をオン、排他的な端点として扱うならオフにします。
  4. コピーボタンで全行を一括コピー — 1 行につき 1 レコードなので、スプレッドシートやスクリプトにそのまま使えます。

よくある質問

範囲が均等に割り切れない場合は?
分割はミリ秒単位で計算され、その後各境界がローカルの真夜中にスナップされるため、一部のチャンクが他より 1 日長く・短くなることがあります。丸め誤差は最後のチャンクに押し付けられるのではなく境界全体に分散されるので、日単位の出力が許す限り区間はバランスが保たれます。
区間ではなく境界点を選ぶ理由は?
境界点は `BETWEEN` 句、パーティショニング関数、日付ウィンドウのループにそのまま渡せるカットポイントです — 開始 / 終了のペアリングは不要です。人がスケジュールを読み、各チャンクの日数を一目で確認したい場合は区間モードが向いています。
なぜ各チャンクの終了が次のチャンクの開始と同じなのですか?
行は半開区間 [start, end) の慣例に従います。共有される境界は後のチャンクに属するため、どの日も二重に数えられず、隙間に落ちることもありません。チャンクごとに包含的な終了日が必要なら、コピー後に各終了列から 1 日引いてください。
タイムゾーンとサマータイム(DST)はどう扱われますか?
すべての日付はブラウザのローカルタイムゾーンの真夜中として解釈され、計算された境界もローカルの真夜中にスナップし直されるため、出力は常にきれいな整数の日付になります — 中途半端な時刻は現れません。範囲内に DST の切り替えがあると生のミリ秒カットが 1 時間ずれますが、スナップ後は真夜中付近に落ちる境界が隣の日に移る可能性がある程度で、これは上で説明した日単位の丸めと同じ現象です。
暦の月や四半期で分割できますか?
できません — 経過時間で等しい長さのスライスに分割します。1 年を 4 分割すると約 91 日のチャンクになり、暦の四半期の近似にしかなりません(1〜3 月は 90 日、7〜9 月は 92 日)。厳密な暦期間が必要なら月・四半期の開始日を自分で列挙し、チャンクを均等にしたいときにこのツールを使ってください。

関連ツール