请教一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