我有一张包含各种日期的用户表,例如生日、雇用日期和年度审核日期。生日可能有一年,也可能没有,入职日期有一年,审核日期没有一年。
我想在一个日期范围内返回一个查询,该查询返回具有为这些重复事件的日期范围的年份计算的日期的行。
例如:具有以下内容的用户:
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 天的日期并不完全相同,因为我需要在给定日期范围内具有正确年份的重复日期,如果范围足够大,可能会超过多年。
我只能想到以编程方式执行此操作。首先检查开始和结束范围是否跨越一年。然后将日期拆分为开始日期到年末、年初到结束日期等,并为每个跨度运行查询。