【发布时间】:2012-04-07 01:43:13
【问题描述】:
我已经阅读了几篇关于 SQL 中的日期和日程安排的文章,但我的问题的解决方案仍然无法解决。
我使用的是 SQL Server 2008 r2。
我需要能够为用户提供下一个截止日期(即使是过去的)。用户可以通过指定频率(每天、每周、每月)、“乘数”(即每 3 天、每 2 周、每 6 个月等...)和开始来创建导入某些数据的时间表日期。
所以,我的数据看起来像这样:
Frequency | Multiplier | Start date
Weekly | 2 | 02/15/2012
Monthly | 1 | 03/01/2012
第一条记录是从 2012 年 2 月 15 日开始每 2 周安排一次导入 第二条记录将是每个月的 1 日(如果他们选择 31 日可能会出现问题,尚未解决)。
我还有最后一次导入日期,可能会也可能不会准时。 所以,我想写一个函数,我可以传入频率(每周、每天等)、乘数和最后一个导入日期,并计算下一个“到期”日期是在最后一个导入日期之后的时间.
因此,鉴于上述记录 1(从 2012 年 2 月 15 日开始每 2 周进口一次),如果我的最后进口日期是 2012 年 3 月 1 日,我需要返回 2012 年 3 月 14 日。显然,鉴于今天是 22 日,这个日期将过期,我可以在任何使用此数据的 UI 中将其标记为此类。如果我的最后一个导入日期是 2012 年 3 月 22 日,我将返回 2012 年 3 月 28 日作为下一个截止日期,依此类推。 为了简化逻辑,我可能需要将不同的频率(日、周、月)分解为三个函数。
我查看了日历表 as described here.
但是,如果有解决方案,我不确定它到底是什么。我觉得非常接近解决方案,但还没有得到它。
非常感谢任何帮助。
谢谢, 托尼
【问题讨论】:
-
感谢山姆的编辑。看起来好多了。
-
您最好提供一些插图示例数据和预期结果,以便大家轻松理解并找到更好的解决方案。
-
Thit,请参见表格后第三段的说明和预期结果。谢谢。
-
我认为您需要传入开始日期以及其他参数 - 因为正如您所说,上次导入日期可能不在正确的边界日期。
-
进口可以提前吗?如果是这样,你怎么能说
3/22/2012对于3/28来说并不早,而不是对于3/14来说晚了
标签: sql date sql-server-2008-r2 scheduler