现在有一句SQL:
SELECT orderDate FROM T_ORDER WHERE ORDER_STATUS=1 AND TRADE_TYPE=4 AND TRADE_WAY=1
结果返回一列orderDate(DateTime类型)
现在我要写一个作业,每五分钟执行一次。作业执行条件是:给orderDate这一列的数据加30分钟然后与现在的时间做对比,如果超出了当前时间,那么就执行一个Update语句。在线等~

解决方案 »

  1.   

    if exists(select 1 from T_ORDER WHERE ORDER_STATUS=1 AND TRADE_TYPE=4 AND TRADE_WAY=1 
    and dateadd(mi,30,orderDate)>getdate())
    begin
    update...
    end
      

  2.   


    update  tb set ...where exists(select 1 from T_ORDER WHERE ORDER_STATUS=1 AND TRADE_TYPE=4 AND TRADE_WAY=1
     and dateadd(minute,30,orderDate)>getdate())
      

  3.   

    UPDATE T_ORDER SET ORDER_STATUS=4
    WHERE
     exists(select 1 from T_ORDER WHERE ORDER_STATUS=1 AND TRADE_TYPE=4 AND TRADE_WAY=1
     and dateadd(Hour,2,orderDate)>getdate())为什么我这样写不对,他把数据库的ORDER_STATUS字段全部更新成4了。悲剧~
      

  4.   

    --楼主测试语句之前,应先对表做个备份,在备份表里执行语句,测试没问题后再更新正式表
    UPDATE T_ORDER SET ORDER_STATUS=4
    WHERE  ORDER_STATUS=1 AND TRADE_TYPE=4 AND TRADE_WAY=1
     and   dateadd(Hour,2,orderDate)>getdate())
      

  5.   

    EXISTS是存在就满足条件 所以更新了你所有的