加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql – “一再使命”的计划选项

发布时间:2021-01-17 11:10:36 所属栏目:编程 来源:网络整理
导读:我正在编写一个处理赏罚职员使命的小应用措施.很是简朴,但就表计划而言,我所僵持的地区是一个一再使命的环境,可所以一次性,天天,每周或每月.假如是每周一次,那就是每周特定的一天.每月是特定的一天. 我有一个使命表和一个recurring_type_id,而且将在代码中处理赏罚重

我正在编写一个处理赏罚职员使命的小应用措施.很是简朴,但就表计划而言,我所僵持的地区是一个一再使命的环境,可所以一次性,天天,每周或每月.假如是每周一次,那就是每周特定的一天.每月是特定的一天.

我有一个使命表和一个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 for dailies从未被思量过,因此输入的值无关紧急.

每周项目标runAt是使命运行的礼拜几.

runAt for mothly是使命运行的月份的一天(月末使命我凡是在第一天运行,由于这样可以省行止理赏罚月份哪一天竣事的贫困,尽量你可以用它来办理这个题目

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

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

此查询为我提供了我必要运行的任何使命的全部taskID.

不确定这是否是你想要的,但但愿你能找到有效的对象.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读