我正在编写一个处理人的任务的小应用程序。非常简单,但就表格设计而言,我所坚持的区域是重复执行的任务,可以是一次,每天,每周或每月一次。如果是每周,则是在特定的一天(每周一次)。每月是特定的一天。
我有一个任务表和一个recurring_type_id,并且打算处理代码中的重复任务,但是理想的方法是吗?另一种方法是在创建任务时插入所有任务- 对于每个事件时间。但这似乎也不对。
任何人都可以对设计提出建议,以及如何以可维护和有效的方式进行处理?
我正在使用SQL Server 2008 R2
我将创建一个任务表以将我的任务插入其中。
taskTable |taskID |Freq |runAt | ------------------------------- |1 |daily |1 | |2 |daily |0 | |3 |weekly |5 | |4 |weekly |1 | |5 |monthly|15 | |6 |monthly|1 | |7 |once |2013-7-4 |
RUNAT的 样片 没有考虑过这样没关系进入什么样的价值。
每周 项目的runAt是任务将在星期几运行。
每月运行 一次 是该任务要运行的月份(我通常会在第一个运行月末任务,因为这样 可以省去 处理该月的哪一天的麻烦,尽管您可以使用它来计算
lastDayOfMonth = datePart(d,dateadd(s,-1,dateadd(mm, datediff(m,0,getdate())+1,0)))
runAt 一次 是任务要运行的实际日期。
然后,我将创建一个每天运行的任务,以查看需要运行的任务。
select taskID from taskTable where (freq = 'once' and runAt = convert(varchar(10),getDate(),21)) or freq = 'daily' or (freq = 'weekly' and runAt = datePart(dw,getDate())) or (freq = 'monthly' and runAt = datePart(d,getDate())
该查询为我提供了我需要运行的所有任务的所有taskID。
不确定这是否是您要寻找的东西,但希望您会在其中找到有用的东西。