mysql 定时器在网上查了查,用这个可以
CREATE EVENT e_test ON SCHEDULE AT TIMESTAMP '2010-09-15 22:35:00' DO update user SET name = '大熊猫' WHERE id = 7; 时间限制是 '2010-09-15 22:35:00',但是我想实现每天的凌晨2点来检索数据库。并且后面的update 这一段,改为当前时间和用户登录时间的差,如果这个差大于10天,那么就把这个人信息移动到另一个表中。我有这个代码,但是不知道怎么写进去。
代码如下:(user:是个数据表)
      $result3=mysql_query("SELECT shijian from user");
      while ( $row = mysql_fetch_array($result3, MYSQL_NUM));
     {
      $rq[0]=$row[0];  //数据库中的日期
      $sj=time();  //当前时间
      $cha[0]=$sj-$rq[0];//两时间差
      $cha[0]=$cha[0]/(24*60*60); //两时间相差的天数 
       if($cha[0]>10) // 如果相差天数大于10天
       {
      $result4=mysql_query("SELECT * from user where shijian='".$rq."'"); //找出超过规定时间的用户信息
      $row1=mysql_fetch_array($result4, MYSQL_NUM);
      $name1=$row1[1]; //用户名
      $pw1=$row1[2]; // 用户密码
      $shijian1=$row1[3];// 用户时间
      $sql1="insert into user2 (name,pw,shijian) values('$name1','$pw1','$shijian1')";// 把这个表插入另一个表中
      mysql_query($sql1);
      $sql2="DELETE from user where shijian='".$rq."'";// 并且把当前表删除掉
      mysql_query($sql2);
       }
     }这个是我自己写的代码,应该正确,就是不知道怎么插入到里面,求高手指教。在这里谢谢高手们了。

解决方案 »

  1.   

    CREATE EVENT e_test ON SCHEDULE AT TIMESTAMP '2010-09-15 22:35:00' DO 
    begin
    insert into user2 (name,pw,shijian) select * from user where shijian>CURDATE()-interval 10 day;
    delete from user where shijian>CURDATE()-interval 10 day;
    end
      

  2.   

    参考下贴。http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
    #22楼
      

  3.   

    delimiter ||CREATE EVENT e_insert_bak
    ON SCHEDULE
    EVERY 24 HOUR
    STARTS concat(date_format(now(),'%Y-%m-%d'),' 00:03:00')
     DO   
    update user SET name = '大熊猫' WHERE id = 7;  
    ||delimiter ; 
      

  4.   

    屏幕提示:错误:Event 'e_test' already exists
    这个是什么意思啊,楼上的高手教给我的代码,我修改了下,就运行了一次,我更改了下时间,数据库中就不变了,提示 上面的错误。这个是怎么回事啊?
      

  5.   

    已经存在了,你需要先删除
    drop event e_test
      

  6.   

    高手,
    insert into user2 (name,pw,shijian) select * from user where shijian>CURDATE()-interval 10 day;
    delete from user where shijian>CURDATE()-interval 10 day;
    您帮我写的这个“where shijian>CURDATE()-interval 10 day” 对我这个不行,因为我数据库中shijian 里面存的是 时间戳。 CURDATE()-interval 10 day 能得到时间戳吗? 所以没有办法比较。
    应该怎么写呢?好困惑啊。
      

  7.   

    CURDATE() 是当前时间,也要折算成秒吗?
      

  8.   

    你可以用这个函数取得当前TIMESTAMP。 建议下载一个MYSQL的手册。
    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  9.   

     没有看懂。我这样写的,但是也不能比较啊?
    $sj=time();
    echo $sj;//当前的时间戳
    $sq="    CREATE EVENT  IF NOT EXISTS event_test  ON SCHEDULE EVERY 24 HOUR STARTS concat(date_format(now(),'%Y-%m-%d'),' 03:00:00') DO    insert into user2 (name,pw,shijian) select name,pw,shijian from user where shijian>$sj-864000 ";mysql_query($sq)or die("错误:".mysql_error());我数据库中的shijian 存储格式是varchar ,864000是十天的秒数, 用当前的$sj 减去 秒数,和数据库中的shijian 能够比较吗? 仿佛又错了。我是刚刚学这个的,不懂,请高手们原谅,麻烦你们了。
      

  10.   

    不清楚你想问什么了?
    建议不要贴你的PHP代码,把问题分开,MYSQL的问题先解决掉,不要把PHP和MYSQL的东西掺在一起,这样别人根本不知道你想问的是什么了。建议你重新组织一下,重新开贴再问吧。