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);
}
}这个是我自己写的代码,应该正确,就是不知道怎么插入到里面,求高手指教。在这里谢谢高手们了。
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);
}
}这个是我自己写的代码,应该正确,就是不知道怎么插入到里面,求高手指教。在这里谢谢高手们了。
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
#22楼
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 ;
这个是什么意思啊,楼上的高手教给我的代码,我修改了下,就运行了一次,我更改了下时间,数据库中就不变了,提示 上面的错误。这个是怎么回事啊?
drop event e_test
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 能得到时间戳吗? 所以没有办法比较。
应该怎么写呢?好困惑啊。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
$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 能够比较吗? 仿佛又错了。我是刚刚学这个的,不懂,请高手们原谅,麻烦你们了。
建议不要贴你的PHP代码,把问题分开,MYSQL的问题先解决掉,不要把PHP和MYSQL的东西掺在一起,这样别人根本不知道你想问的是什么了。建议你重新组织一下,重新开贴再问吧。