给定这个模型:sysschedules,并假设数据库中有几个事件具有不同的重复模式组合:每天、每 3 天每天、每周二。每 2 周,每月 28 日,每月每 2 个月的第二个星期二,每年 2 月 28 日,等等......
使用给定的模型,某些领域会立即浮现在脑海中:
- freq_type获取偶数是否为每日、每周、每月等...
- freq_interval确定间隔,基于 freq_type
- 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 表示只有一次,由 active_start_date 获取
- freq_type 为 4 表示每天,获取所有这些,因为它们也会在这一天发生
- freq_type 为 8 表示每周,在 freq_interval 4(星期二)获取这些事件
- freq_type 为 32 表示每月,相对 - freq_interval 3(周二),freq_relative_interval 16 表示最后
这就是立即想到的“错误”
1.每周一次但超过一天的活动(包括周二)怎么办?例如,每周二/四发生的每周事件的 freq_interval 为 20。我将如何重写上面的查询以说明所有可能的 freq_interval 组合(可能是周二)?
2.每n周/月发生一次的事件呢?我如何知道是本周/月的“开还是关”时间范围?