一个B/S系统,用户得到所分配的帐号后才可使用.但是帐号都是有时间限制的.比如说guest这个帐号可使用的时间为2008-3-13到2008-5-13号,这样的功能该怎么实现呢?我在数据库表中设计了一个字段(status)来控制帐号的状态,,当status为0时表示帐号已经过了使用期限,当status为1时表示帐号可用,处于有效期内.还有一个结束时间的字段(endtm)
我初步的设想是,每次用户帐号进行登陆时,根据当前的系统时间来和endtm进行比较,当系统时间<endtm时,status为1,当系统时间>endtm时,status为0.当status为1 时,可正常登陆,为时则提示帐号过期.
这样做好像很麻烦,小弟想请问一下各位大虾,有没有别的好方法,比如说不用每次登陆的时候都判断status值,当超出使用期限后,数据库中的status自动变为0,有没有这种方法呢?
在线等!!!!
(注:若客户端系统时间不正确的话,是不是对程序有影响)

解决方案 »

  1.   

    如果是SQL Server将status列设为计算列...计算公式自己想...
      

  2.   

    通过sql语句来进行(现在系统时间-注册的起始日期)所得的天数来判断是否过去。
    用datediff(day,起始日期,getdate())来计算天数。if 天数>期限
    过期
      

  3.   

    建议你在部署的SQL服务器上写一个SQL作业,让其每天的某个时间点去调度此作业。
    作业的内容就是UPDATE DB_Name SET status=0 WHERE GETDATE()<endtm
    因为此作业在服务器上运行,故与客户端系统时间准确与否无关!
      

  4.   

    UPDATE DB_Name SET status=0 WHERE GETDATE() >endtm