更新前先备份表:Update b
set b.f_ygh=a.f_ygh
from t_yg a inner join t_Authority  b on a.f_xm=b.f_xm
where b.f_ygh is null 

解决方案 »

  1.   

    然后假设存在授权表内存在以下字段,更改密码的更新时间,授权过期时间,一个授权的标志位BOOL位,
    希望写一个脚本,实现每天检查一次,如果密码更新时间超过了授权时间,比如说规定90天更改一次,现在时间-更新时间超过90天,则授权标志位显示false,应该如何写这个脚本呢
      

  2.   

    实际上就是改一下我的脚本,把这个脚本放到SQL Agent的job里面,每天运行一次,在where条件中加上对标识位的判断
      

  3.   

    请教下,若f_ptime为密码更新时间,我修改了一条记录,把以下语句执行,为何结果为0declare @datetime smalldatetime


    select @datetime=(GETDATE())
    Update t_Authority 
    set f_AP=1 where (( datediff(DAY,@datetime,f_ptime))>=90)这样的语句
      

  4.   

    smalldatetime 和getdate()默认是datetime类型不符合,你试试@datetime换回datetime类型,并且确保f_ptime也为datetime类型。然后你试试:
    select *
    from t_Authority 
    where (( datediff(DAY,@datetime,f_ptime))>=90)
    有没有数据,
      

  5.   

    改成datetime之后貌似select出的结果也是0例子记录是一条f_ptime是2014年2月份的,现在时间是7月,肯定距离超过90
    (( datediff(DAY,@datetime,f_ptime))>=90)我觉得关键是这句话是否是正确表述
      

  6.   

    不好意思,我知道了,是前后顺序摆反了,是后面f_ptime减去前面@datetime,现在的结果是负数,调换位置后就对了,多谢多谢