このモデルを考えると:sysschedules、そして再発パターンのさまざまな組み合わせでDBにいくつかのイベントがあったと仮定します:毎日、3日ごとに毎日、毎週火曜日。2週間ごと、28日に毎月、2か月ごとの第2火曜日に毎月、2月28日に毎年など...
与えられたモデルでは、すぐに頭に浮かぶ特定のフィールドがあります。
- freq_typeを使用して、偶数が日次、週次、月次などであるかどうかを取得します。
- freq_typeに基づいて間隔を決定するfreq_interval
- freq_relative_intervalは、イベントが月の1日、2日、3日などにあるかどうかを判別します。
- freq_recurrence_factorを使用して、イベント発生間の週次/月次の間隔を決定します
今日、2012年2月28日火曜日のすべてのイベントを照会したい場合...それはどのようになりますか?
更新
これまでに思いついたものは次のとおりです(この例では、2月28日に発生するすべての「イベント」(火曜日)が必要です)。
SELECT * FROM TableName WHERE (freq_type = 1 && active_start_date = '2012-02-28') OR (freq_type = 4) OR (freq_type = 8 && freq_interval = 4) OR (freq_type = 32 && freq_interval = 3 && freq_relative_interval = 16)
- freq_typeが1の場合は、それが1回だけであることを意味し、active_start_dateまでに取得します
- freq_type 4は毎日を意味し、この日に発生するため、すべてを取得します
- freq_type 8は毎週を意味し、freq_interval 4でそれらのイベントを取得します(火)
- freq_type 32は、月次、相対を意味します-freq_interval 3(火)、最後のfreq_relative_interval 16
これがすぐに「間違った」と頭に浮かぶものです
1.毎週火曜日を含め、1日を超えるイベントはどうですか?たとえば、毎週火/木に発生するイベントのfreq_intervalは20になります。火になる可能性のあるfreq_intervalのすべての可能な組み合わせを考慮して、上記のクエリをどのように書き直しますか?
2. n週間/月ごとに発生するイベントはどうですか?今週/月の「オンまたはオフ」の時間枠であるかどうかをどのように知ることができますか?