Q&A 19

日付を条件として探索する方法(応用編)


基本編では日付型データの入力方法の例についてご紹介しましたが,応用編ではそれを組み合わせた使用例について説明します。なお,選択を速くするために用意する索引については基本編の「索引によって選択を速くするには」,「効率のよい索引の定義の仕方」をご覧ください。

20 日締め(先月 21 日から今月 20 日)を指定する場合

日付'21' - 年月間隔'1月' ≦[日付]≦ 日付'20'
21 と 20 を,11 と 10 にすればいわゆる 10 日締めにすることができます。
ただし 29 日以降の場合は上記の式が使えない月がありますので注意してください。例えば 3 月 31 日の一月前は 2 月 31 日と計算されますが実在しません。このような場合は以下のように固定的に指定するしか方法はありません。
日付'3.1' ≦[日付]≦ 日付'3.31'
通常,末日締めであれば,基本編の「今月」,「先月」を使用できるでしょう。

今週,先週,来週を探索する場合

これは残念ながら関数を使わないと指定できません。今週を求める式は下記の通りです。
$日曜 := 日付'.' - #日時間隔(#曜日(日付'.'),'日'),
$土曜 := $日曜 + 日時間隔'6日',
$日曜 ≦[日付]≦ $土曜
日曜日を週の初めの日とした場合は上記の式,月曜を始めとする場合は 1 日分ずらす必要があります。また先週,来週については,変数($日曜,$土曜)を求める式の中で 日時間隔'7日' を減ずるか,加えてください。
なお DPL 中で計算する場合は,先に変数に計算結果を代入しておき,選択ステートメントの条件式は変数で範囲指定すればいいでしょう。

構造コマンドパラメータ
 代入$日曜 := 日付'.' - #日時間隔(#曜日(日付'.'),'日')
 代入$土曜 := $日曜 + 日時間隔'6日'
 選択@表,$日曜 ≦[日付]≦ $土曜