--直接一句就行啦:delete from 表 where datediff(day,datafield,getdate())>7

解决方案 »

  1.   

    delete from 表 where datediff(dd,时间字段,getdate())>7
      

  2.   

    --再创建一个作业,每天执行这个删除语句就行了企业管理器
    --管理
    --SQL Server代理
    --右键作业
    --新建作业
    --"常规"项中输入作业名称
    --"步骤"项
    --新建
    --"步骤名"中输入步骤名
    --"类型"中选择"Transact-SQL 脚本(TSQL)"
    --"数据库"选择执行命令的数据库
    --"命令"中输入要执行的语句:
    delete from 表 where datediff(day,datafield,getdate())>7 --确定
    --"调度"项
    --新建调度
    --"名称"中输入调度名称
    --"调度类型"中选择你的作业执行安排
    --如果选择"反复出现"
    --点"更改"来设置你的时间安排
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行
      

  3.   

    --全部用SQL语句来实现--设置 SQL Agent 服务为自动启动
    exec msdb..sp_set_sqlagent_properties @auto_start=1
    gouse 你的数据库名
    go--创建作业
    exec msdb..sp_add_job @job_name='数据处理'--创建作业步骤
    declare @sql varchar(800),@dbname varchar(250)
    select @sql='delete from 表 where datediff(day,datafield,getdate())>7'  --数据处理的命令
    ,@dbname=db_name() --执行数据处理的数据库名exec msdb..sp_add_jobstep @job_name='数据处理',
    @step_name = '数据同步',
    @subsystem = 'TSQL',
    @database_name=@dbname,
    @command = @sql,
    @retry_attempts = 5,  --重试次数
    @retry_interval = 5   --重试间隔--创建调度
    EXEC msdb..sp_add_jobschedule @job_name = '数据处理', 
    @name = '时间安排',
    @freq_type=4,   --4 每天,8 每周,16 每月
    @freq_interval=1, --作业执行的天数
    @freq_subday_type=0, --是否重复执行,0x1 在指定的时间, 0x4 分钟, 0x8 小时 
    @freq_subday_interval=1,  --重复周期
    @freq_recurrence_factor=0, --重复执行,则设置为1,否则设置为0
    @active_start_time = 00000 --0点开始执行-- 添加目标服务器
    EXEC msdb.dbo.sp_add_jobserver 
    @job_name = '数据处理' ,
    @server_name = N'(local)'
      

  4.   

    对了,我那个时间字段是另外一个人设计的,他没有用time类型,用char(20),请问这样的话,能写吗?不行的话,我只能改库结构了!
      

  5.   

    --不过,为了防止你的表中误存了无效的日期数据,你可以加上一个容易处理delete from 表 where datediff(day,case when isdate(datafield) when 1 then datafield else getdate() end,getdate())>7
      

  6.   

    --不过,为了防止你的表中误存了无效的日期数据,你可以加上一个容易处理delete from 表 where datediff(day,case when isdate(datafield) when 1 then datafield else getdate() end,getdate())>7
    ---------------------------------------------------------------------
    这句话不行吗?
    ERROR:Incorrect syntax near the keyword 'when'.
      

  7.   

    --写多了一个when
    delete from 表 where datediff(day,case isdate(datafield) when 1 then datafield else getdate() end,getdate())>7