誕生日、雇用日、年次レビュー日など、さまざまな日付のユーザーのテーブルがあります。誕生日には年がある場合とない場合があり、採用日には年があり、評価日には年がありません。
これらの定期的なイベントの日付範囲の年について計算された日付を含む行を返す日付範囲全体のクエリを返したいです。
例: 次のユーザー:
dob:1980-05-05
doh:2005-06-22
review:0000-10-01
次に、たとえば 2012-05-01 から 2013-12-01 の範囲をクエリすると、次のようなレコードが返されます。
Event,Date
dob,2012-05-05
doh,2012-06-22
review,2012-10-01
dob,2013-05-05
doh,2013-06-22
review:2013-10-01
これはおそらく、各日付フィールドの個別の UNION クエリで行われることを認識しています。これは、指定された日付範囲内の適切な年を持つ定期的な日付が必要なため、範囲が十分に大きい場合は複数年になる可能性があるため、将来の日付 x 日を見つけることとまったく同じ問題ではありません。
これをプログラムで行うことしか考えられません。まず、開始範囲と終了範囲が 1 年を超えるかどうかを確認します。次に、日付を開始日から年末、年始から終了日などに分割し、各スパンに対してクエリを実行します。