gpt4 book ai didi

sql - 'recurring tasks' 的设计选项

转载 作者:行者123 更新时间:2023-12-02 21:26:46 27 4
gpt4 key购买 nike

我正在编写一个小型应用程序来为人们处理任务。非常简单,但就表格设计而言,我所坚持的领域是重复性任务的情况,可以是一次、每天、每周或每月。如果每周,则为每周的特定日期。每月是特定的一天。

我有一个任务表和一个 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 是任务运行的星期几。

runAt for mothly 是任务运行的月份日期(我通常在第一个运行月末任务,因为这样可以省去处理月份结束日期的麻烦,尽管你可以用这个来解决这个问题

lastDayOfMonth = datePart(d,dateadd(s,-1,dateadd(mm, datediff(m,0,getdate())+1,0)))

runAt once 是任务运行的实际日期。

然后我会创建一个每天运行的任务来查看需要运行的内容。

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())

此查询为我提供了我需要运行的任何任务的所有任务ID。

不确定这是否是您正在寻找的内容,但希望您能从中找到有用的东西。

关于sql - 'recurring tasks' 的设计选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14412527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com