日期:2014-05-18  浏览次数:20635 次

请教一SQL语句,谢谢
表A(date)   //date为datetime   类型
表B(sysdate,shl)//sysdate表示系统日期dateteim类型,shl表示相差的天数   int   类型

我想在服务器上设定个计划任务,每天检测表A中的最大date与系统日期相差的天数,将检测结果写入B,请问该怎么写,谢谢


------解决方案--------------------
//建立计划
EXEC dbo.sp_add_schedule
@schedule_name = N 'RunEveryDay ',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 000000;


------解决方案--------------------
建立一个作业,配置好作业,用下面的代码
Declare @d datetime
Select @d=Max(date) From A
Insert Into B(sysdate,shl) Select getdate(),datediff(dd,@d,getdate())
------解决方案--------------------
datediff
好像不行吧!!
比如:
select datediff(dd, '2007-08-01 ', '2007-09-01 ')---结果应该为31天

但是算出来:
/*
-----------
1

(所影响的行数为 1 行)
*/



------解决方案--------------------
//建立存储过程
create procedure ap_1
as
begin
declare @d datetime
declare @i int
select @d=max(date) from 表A
set @i=DATEDIFF(day, @d, getdate())
insert into 表B(sysdate,shl) values(getdate(),@i)
end
go
//建立作业
EXEC dbo.sp_add_job
@job_name = N 'EveryDayJob ' ;
go
//建立作业步骤
EXEC sp_add_jobstep
@job_name = N 'EveryDayJob,
@step_name = N 'Step1,
@subsystem = N 'TSQL ',
@command = N 'exec sp_1;
go
//计划附加到作业
EXEC sp_attach_schedule
@job_name = N 'EveryDayJob ',
@schedule_name = N 'RunEveryDay ' ;
GO