再做一个图书借阅系统的课设时,因为需要在数据库里实时更新某个人当前借阅图书的逾期天数,需要每次打开电脑都获取当前日期,再减去应还书日期,当时一直想不到一个很好的解决方法,然后在网上查了些资料,说是要用到sql server 创建作业的办法,实践了以后 感觉get了一个新技能哈哈哈!
1. 怎么创建作业,百度里都有,我就按着一个个步骤下来的,找到这个代理然后新建作业。
![](https://img-blog.csdn.net/20170328131558667?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0NzQwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2. 我是设置了每天零点执行,我当时还是试验了蛮久的,把电脑关了他肯定就不执行了。。。但是每次开电脑他都会自动执行一次。
![](https://img-blog.csdn.net/20170328131620885?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0NzQwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.在作业活动监视器里也可以看到一个状态,因为我已经把这个作业移走了,所以现在是失败的。
![](https://img-blog.csdn.net/20170328131653136?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQ0NzQwMDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
4. 我的一个命令代码,写在步骤里:
UPDATE
借阅信息表
set 逾期天数=(
CASE
WHEN ( DATEDIFF(day,GETDATE(),dateadd(month,借书期限,借书日期) ) <0 ) THEN
(DATEDIFF(DAY, dateadd(month,借书期限,借书日期) ,GETDATE()))
ELSE
0
END
) where 归还状态=0;
综上,当时遇到的一个最大的难点,现在看看好像还可以用其他方式解决,比如直接在VS使用循环查询语句什么的,不过那时候感觉好像很麻烦的样子,觉得数据库这边设计更简单