下面是mysql的定时任务 
create event if not exists rpt_stat
on schedule every 1 day
starts timestamp   '2010-09-01 02:00:00' 
on completion not preserve
do call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));-----------event_scheduler   on----------

解决方案 »

  1.   

    如下贴出来看一下。mysql> show variables like 'event_scheduler';
    +-----------------+-------+
    | Variable_name   | Value |
    +-----------------+-------+
    | event_scheduler | OFF   |
    +-----------------+-------+
    1 row in set (0.00 sec)mysql>
    mysql> show events;
    +------+----------+----------------+-----------+-----------+------------+-------
    ---------+----------------+---------------------+------+---------+------------+-
    ---------------------+----------------------+--------------------+
    | Db   | Name     | Definer        | Time zone | Type      | Execute at | Interv
    al value | Interval field | Starts              | Ends | Status  | Originator |
    character_set_client | collation_connection | Database Collation |
    +------+----------+----------------+-----------+-----------+------------+-------
    ---------+----------------+---------------------+------+---------+------------+-
    ---------------------+----------------------+--------------------+
    | csdn | rpt_stat | root@localhost | SYSTEM    | RECURRING | NULL       | 1
             | DAY            | 2010-09-01 02:00:00 | NULL | ENABLED |          0 |
    latin1               | latin1_swedish_ci    | latin1_swedish_ci  |
    +------+----------+----------------+-----------+-----------+------------+-------
    ---------+----------------+---------------------+------+---------+------------+-
    ---------------------+----------------------+--------------------+
    1 row in set (0.02 sec)mysql>
      

  2.   

    我先在mysql>set global event_scheduler = 1;
    然后通过定时任务来 定时调用存错过程  但是 存储过程里面的时间维表 全部为NULL
      

  3.   

    call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));你的这个存储过程写得不正确。里面的代码写错了。错在哪儿?我猜不出你的代码。
      

  4.   

    create  procedure pr_datetime(
        @p_day varchar    --日期类型参数  yyyy.mm.dd
        )as
       begin
          
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 00:00:00',@p_day+' 00:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 01:00:00',@p_day+' 01:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 02:00:00',@p_day+' 02:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 03:00:00',@p_day+' 03:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 04:00:00',@p_day+' 04:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 05:00:00',@p_day+' 05:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 06:00:00',@p_day+' 06:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 07:00:00',@p_day+' 07:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 08:00:00',@p_day+' 08:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 09:00:00',@p_day+' 09:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 10:00:00',@p_day+' 10:59:59',@p_day,substring(@p_day,1,7));
        
        insert into rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 11:00:00',@p_day+' 11:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 12:00:00',@p_day+' 12:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 13:00:00',@p_day+' 13:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 14:00:00',@p_day+' 14:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 15:00:00',@p_day+' 15:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 16:00:00',@p_day+' 16:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 17:00:00',@p_day+' 17:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 18:00:00',@p_day+' 18:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 19:00:00',@p_day+' 19:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 20:00:00',@p_day+' 20:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 21:00:00',@p_day+' 21:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 22:00:00',@p_day+' 22:59:59',@p_day,substring(@p_day,1,7));
        
        insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
        values(@p_day+' 23:00:00',@p_day+' 23:59:59',@p_day,substring(@p_day,1,7));
      
       commit;
     end;
    类似于这个的表 然后传参数 插入值
      

  5.   

    你这个是MSSQL的存储过程呀。要转换成MYSQL的语法才行。
      

  6.   

    (@p_day+' 18:00:00'+号在MYSQL里面用CONCAT函数
    CONCAT(@p_day+' 18:00:00')
    这样。http://blog.chinaunix.net/u3/116107/showart.php?id=2307078这里介绍一个工具,可以批量把MSSQL的存储过程转成MYSQL的。
      

  7.   

     @p_day varcharMYSQL与 MS SQL不同,这个@在MYSQL中代表不同的含义。 具体代码什么,卖个小关子,你应该自己到MYSQL的的手册中看一下,5分钟就可以搜索到这个主题。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
    解决方法,把所有的 @p_day 替换成  p_day 
    另外 MYSQL的字符串加连也不是 'abcd' + 'efgh' ,MYSQL中需要使用 concat
      

  8.   

    建议先把其中一条语句调通再写存储过程。比如先确保 
       insert into dbo.rpt_datetime(start_time,end_time,d_day,d_month)
       values(@p_day+' 23:00:00',@p_day+' 23:59:59',@p_day,substring(@p_day,1,7));这句能用。 之后再改成存储过程。 确认存储过程没有问题后再 写你的EVENT。 否则你以为是你的EVENT有什么问题,结果最终只是SQL语句根本不对。
      

  9.   

    刚才发那个 是sql server的 存储过程    event就是
    create event if not exists rpt_stat
    on schedule every 1 day
    starts timestamp '2010-09-01 02:00:00'  
    on completion not preserve
    do call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));目的就是 按时执行我写的存储过程 但是 我运行后 查询时间那个表,结果表中没有数据
      

  10.   

    call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));单独执行这个,有结果么??你的存储过程都有问题,还怎么出结果啊大哥。
      

  11.   

    mysql 的存储过程能跑通 而且手动也能传值进去  现在就是 event的问题 
      

  12.   

    call pr_rpt_all()是执行这个存储过程
    date_format(current_date-1 ,'%Y.%m.%d')是参数  系统前一天
      

  13.   

    单独执行call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));
    出来的数据是 
      

  14.   

     call pr_rpt_all(date_format(current_date-1 ,'%Y.%m.%d'));那发你的MYSQL中的存储过程啊。否则你贴个MS SQL的存储过程让大家以MYSQL来分析,不是逗大家玩吗?!
      

  15.   

    drop procedure if exists pr_rpt_daycode; 
    create   procedure pr_rpt_daycode(
        in  p_day    varchar(10)
    )begin
       declare  v_month  varchar(7);
       
       set v_month=substr(p_day,1,7);
       delete from rpt_daycode where stat_day=p_day;
      
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 00:00:00'),concat(p_day,' 00:59:59'),p_day,v_month;
        
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 01:00:00'),concat(p_day,' 01:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 02:00:00'),concat(p_day,' 02:59:59'),p_day,v_month; 
                    
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 03:00:00'),concat(p_day,' 03:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 04:00:00'),concat(p_day,' 04:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 05:00:00'),concat(p_day,' 05:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 06:00:00'),concat(p_day,' 06:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 07:00:00'),concat(p_day,' 07:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 08:00:00'),concat(p_day,' 08:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 09:00:00'),concat(p_day,' 09:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 10:00:00'),concat(p_day,' 10:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 11:00:00'),concat(p_day,' 11:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 12:00:00'),concat(p_day,' 12:59:59'),p_day,v_month; 
                    
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 13:00:00'),concat(p_day,' 13:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 14:00:00'),concat(p_day,' 14:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 15:00:00'),concat(p_day,' 15:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 16:00:00'),concat(p_day,' 16:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 17:00:00'),concat(p_day,' 17:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 18:00:00'),concat(p_day,' 18:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 19:00:00'),concat(p_day,' 19:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 20:00:00'),concat(p_day,' 20:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 21:00:00'),concat(p_day,' 21:59:59'),p_day,v_month;
       
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 22:00:00'),concat(p_day,' 22:59:59'),p_day,v_month; 
                    
       insert into  rpt_daycode(stat_stime,stat_etime,stat_day,stat_month)
       select concat(p_day,' 23:00:00'),concat(p_day,' 23:59:59'),p_day,v_month;  
    commit;
        
    end; 
      

  16.   

      drop procedure if exists pr_rpt_all;
    create procedure pr_rpt_all(
      in p_day varchar(10)

    begin
      call pr_rpt_daycode(p_day);
    end;
      

  17.   

    show create table  rpt_daycode;贴出来看一下。
    另外你的图大家看不到。 建议能象#1楼那样直接贴文本。
      

  18.   

    drop table if exists rpt_daycode;
    create table rpt_daycode(
      stat_stime   varchar(19)            not null,
      stat_etime   varchar(19)            not null,
      stat_day     varchar(10)            not null,
      stat_month   varchar(10)            not null
    )type=innodb default charset=gbk;
      

  19.   


    /*开启功能*/
    SET GLOBAL event_scheduler = ON;DELIMITER //
    DROP EVENT IF EXISTS `eventlog`;
    CREATE EVENT IF NOT EXISTS `eventlog`ON SCHEDULE
    EVERY 1 DAY 
     STARTS TIMESTAMP(CURRENT_DATE,'09:00:00')
     ON COMPLETION PRESERVE ENABLE
    DO
    BEGIN
        DELETE FROM TAB_LOG WHERE TAB_LOG.DT_TIME < DATE_ADD(NOW(),INTERVAL "0" DAY);
    END;
    //
    DELIMITER ;
    请问,我每天9点执行删除3天前的日志表记录,怎么在第二天不执行呢?
    环境是Linux下的mysql数据库,我测试方法是:将linux下的date时间改成8:58分 然后mysql数据创建了event定时执行,即以上sql代码,创建的sql脚本没有问题,单独测试过语句,另外我将每天执行(EVERY 1 DAY)改成每分钟执行都能正常执行,但是用我修改Linux时间去模拟每天执行,却执行不了啊~~~求解释……等待中……