linux---cronjob
windows---schedule task 
mysql5自身有没有这个定时功能用外部的调用存储过程吧,呵呵不过你也可以用envt试验一下

解决方案 »

  1.   

    http://dev.mysql.com/doc/refman/5.1/en/create-event.htmlCREATE EVENT Syntax语法,是E文
      

  2.   

    哟什么时候mysql也支持存储过程了啊?
      

  3.   

    mysql version 5.1.6
    CREATE EVENT   
      [IF NOT EXISTS]   /*   标注   1   */   
      event_name   /*   标注   2   */   
      ON   SCHEDULE   schedule   /*   标注3   */   
      [ON   COMPLETION   [NOT]   PRESERVE]   /*   标注4   */   
      [ENABLE   |   DISABLE]   /*   标注5   */   
      [COMMENT   'comment']   /*   标注6   */   
      DO   sql_statement   /*   标注7   */   
        
        
      标注   3:   ON   SCHEDULE   计划任务   
      有两种设定计划任务的方式:   
      AT   时戳   
      /*   "单次的计划任务"   */   
      EVERY   时间(单位)的数量   时间单位   [STARTS   时戳]   [ENDS时戳]   
      /*   "重复的计划任务"   */   
      在两种计划任务中,时戳可以是任意的TIMESTAMP   和DATETIME   数据类型,要   
      求提供的是将来的时间(大于CURRENT_TIMESTAMP),而且小于Unix时间的   
      最后时间(等于或小于'2037-12-31   23:59:59')。   
      

  4.   

        我觉得你要用存储过程,最好用mssql,这个配合里面的作业调度很好实现的~~~~~~~~~~
      

  5.   

    晕我说的不是调度时间,我说的是给存储过程一个时间段
    然后隔一个小时插一条数据
    如果用while循环是这么写while begin_time<end_time then
    set begin_time=begin_time+interval 1 hour;
    insert into table values(begin_time);
    end while;如果时间段隔离很大,循环次数多会很慢,有没有不用循环
    一下就能实现这个功能的,或者比这个快的方法。
      

  6.   

    写成计划就可以了DECLARE @TaskID varchar(50), @TaskName varchar(50), @Person varchar(50),
    @date datetime,@days intDECLARE task_cursor CURSOR FOR 
    SELECT TaskID,TaskName, Person,date,days
    FROM taskwhere (datediff(mi,getdate(),(dateadd(day,days,date)))<(24*60) and datediff(mi,getdate(),(dateadd(day,days,date)))>0) or (datediff(hh,getdate(),(dateadd(day,days,date)))<24 and datediff(hh,getdate(),(dateadd(day,days,date)))=0)OPEN task_cursorFETCH NEXT FROM task_cursor 
    INTO @TaskID, @TaskName, @Person,@date,@daysWHILE @@FETCH_STATUS = 0
    BEGIN
    --print'aa'+convert(datetime,@date,109) 
    --set @date = substring(@date,7,4)+'-'+substring(@date,1,2)+'-'+substring(@date,4,2)+substring(@date,11,6)
    set @date=dateadd(day,@days,@date)
       insert into Messages values('任务到期提示', '你的任务<strong><a href="Restores.aspx?taskID='+@TaskID+'">'+
    @TaskName+'</a></strong>将在'+convert(char(20),@date,120)+'时到期,<br/>请及时了结此任及时了结此任务<br/>注意:如不了结,系统会自动了结!', '系统管理员', @Person, 6, getdate(), 0, 1)
    insert into Task_temp values(@TaskID,@date)
       -- Get the next task.
     FETCH NEXT FROM task_cursor 
    INTO @TaskID, @TaskName, @Person,@date,@days
    END
    CLOSE task_cursor
    DEALLOCATE task_cursor
    GO参考一下吧,没时间整理不明白的地方私聊
      

  7.   

    晕我说的不是调度时间,我说的是给存储过程一个时间段 
    然后隔一个小时插一条数据 
    如果用while循环是这么写 while begin_time <end_time then 
    set begin_time=begin_time+interval 1 hour; 
    insert into table values(begin_time); 
    end while; 如果时间段隔离很大,循环次数多会很慢,有没有不用循环 
    一下就能实现这个功能的,或者比这个快的方法。
      

  8.   

    不知道mysql里面有没有触发器一类的东西