当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 在SQL Server中建立定时任务,处理时间超过一天的记录

MSSQL
一个分页存储过程代码
Sql Server 2000 行转列的实现(横排)
sql2000挂起无法安装的问题的解决方法
完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"
SQL Server数据库的修复SQL语句
分页存储过程代码
批量执行sql语句的方法
一条SQL语句搞定Sql2000 分页
SQL Server 海量数据导入的最快方法
SQL Select语句完整的执行顺序
MSSQL 清空数据库的方法
mssql自动备份及自动清除日志文件服务器设置
Sql 语句学习指南
.NET Framework SQL Server 数据提供程序连接池
对有自增长字段的表导入数据注意事项
SQL Server导入、导出、备份数据方法
sql server 临时表 查找并删除的实现代码
该行已经属于另一个表 的解决方法
SQL 注入式攻击的本质
SQL 平均数统计

MSSQL 中的 在SQL Server中建立定时任务,处理时间超过一天的记录


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 66 ::
收藏到网摘: n/a

这个不能用触发器,要用作业。

打开企业管理器,进入你服务器名下的“管理”,启动SQL Server代理。然后查看服务器属性,选中“自动启动SQL Server代理”。

接下来进入SQL Server代理下的“作业”,在右边点右键选“新建作业”。

在“常规”里,随便输入一个作业名,分类要选最后一项“数据库维护”。

在“步骤”里,点“新建步骤”,随便输入一个步骤名,数据库选成你的数据库,命令里输入你删除记录的语句,也可以通过“打开”来装载T-SQL脚本,弄好后记得分析一下,没有问题再继续。在“高级”里将“失败时的操作”改成“转到下一步”。

在“调度”里,点“新建调度”,随便输入一个调度名,点“更改”,“发生频率”选每天,“一次发生于”里设置17:00:00,然后点“确定”,再点“确定”,再点“确定”,配置就完成了。


SQL语句:

update n_project set p_flag = 0, p_stime = NULL where p_id IN (select p_id from n_project where p_flag = 1 and datediff(hh, p_stime, GetDate()) > 24);    --将超过一天的记录选出,设置p_flag和p_stime字段

注:hh为小时,datediff 可比较两个日期的时间差,GetDate()可获得当前时间

 

DateDiff 函数  (转贴)


返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

语法

DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear]])

DateDiff 函数语法中有下列命名参数:

部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。


设置

interval 参数的设定值如下:

设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒


firstdayofweek 参数的设定值如下:

常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六

常数 值 描述
vbUseSystem 0 用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。


说明

DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。

为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。

如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。

firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。

如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。

在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。

 

DateDiff 函数    (转贴)


 

返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。

语法

DateDiff(interval, date1, date2[, firstdayofweek][, firstweekofyear]])

DateDiff 函数语法中有下列命名参数:

部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为