我有一个表 base,下面分别为表结构和数据 
id name order date        flag 
1  aaa  a122  2007-10-30  1 
2  bbb  a1223 2007-10-31  1 
3  ccc  1224  2007-11-21  1 
4  ddd  a122  2007-12-21  0 如何让系统的时间到了每一条记录指定的时间,将“flag”自动设为“0”,意思就是说,例如:到了明天“2007-10-30 ”,则第一条记录的“flag”系统会自动设为“0” !!请各位大侠帮帮忙了!!

解决方案 »

  1.   

    用job来做,管理->sqlserver代理->作业
      

  2.   

    如果是这样的话,楼主这下要用作业去执行了.把作业设为每天凌晨执行update t
    flag=0 
    where convert(varchar(10),date,120)=convert(varchar(10),getdate(),120)
      

  3.   


    或update t 
    flag=0  
    where datediff(day,getdate(),date)=0
      

  4.   

    企业管理器 
    --管理 
      --SQL Server代理 
      --右键作业 
      --新建作业 
      --"常规"项中输入作业名称 
      --"步骤"项 
        --新建 
        --"步骤名"中输入步骤名 
        --"类型"中选择"Transact-SQL 脚本(TSQL)" 
        --"数据库"选择执行命令的数据库 
        --"命令"中输入要执行的语句: 
                           update base set flag=0 where datediff(dd,date,getdate())=0 --确定 
    --"调度"项 
    --新建调度 
    --"名称"中输入调度名称 
    --"调度类型"中选择你的作业执行安排 
    --如果选择"反复出现" 
    --点"更改"来设置你的时间安排为一天一次 
    然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 
    我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. 
      

  5.   

    update base 
    set flag=0  
    where datediff(day,getdate(),date)=0
      

  6.   

    先谢谢各位大侠先,谢谢“fa_ge ”侠,一次又一次帮助小弟我,“wgzaaa ”侠,再谢谢“libin_ftsafe ”侠的详细讲解,最后谢谢“dobear_0922 ”侠!实在太感谢四位大侠了!!
      

  7.   

    /*
    ……意思就是说,例如:到了明天“2007-10-30 ”,则第一条记录的“flag”系统会自动设为“0”……
    ---------------
    这样的需求,建议使用计算列:简单、实时
    */create table Test
    (
    id int,
    name varchar(10),
    [order] varchar(10),
    date datetime,
    flag AS (case when date>=getdate() then 1 else 0 end)--计算列
    )insert Test
    select 1,'aaa','a122','2007-10-30' union all
    select 2,'bbb','a1223','2007-10-31' union all
    select 3,'ccc','1224','2007-11-21' union all
    select 4,'ddd','a122','2007-12-2'--到期的记录,flag自然变成0:
    select * from Test
    /*
    id          name       order      date                                                   flag        
    ----------- ---------- ---------- ------------------------------------------------------ ----------- 
    1           aaa        a122       2007-10-30 00:00:00.000                                1
    2           bbb        a1223      2007-10-31 00:00:00.000                                1
    3           ccc        1224       2007-11-21 00:00:00.000                                1
    4           ddd        a122       2007-12-02 00:00:00.000                                1
    */--更新操作实时响应变化
    update Test set date=0 where id=1
    select * from Test -- 第一记录 flag=0
    /*
    id          name       order      date                                                   flag        
    ----------- ---------- ---------- ------------------------------------------------------ ----------- 
    1           aaa        a122       1900-01-01 00:00:00.000                                0
    2           bbb        a1223      2007-10-31 00:00:00.000                                1
    3           ccc        1224       2007-11-21 00:00:00.000                                1
    4           ddd        a122       2007-12-02 00:00:00.000                                1
    */--删除对象
    drop table Test
      

  8.   

    还好是日期,不是具体到某秒.不然job要跑死啦