每当insert到一个月的月末比如2006-05-31之后就全都变成0000-00-00,一直进入死循环了怎么破啊???
下面是代码,min是起始日期,max是结束日期,tmp是要插入的表格,里面有三个字段,第二个就是要连续插入的日期。begin
declare v date;
declare max date;
declare min date;
set max = (select max(cast(datetime as date)) from comment WHERE shop=1894891);
set min = (select min(cast(datetime as date)) from comment WHERE shop=1894891);
set v = min;
insert into tmp values (null, min, 0, 0);
insert into tmp values (null, max, 0, 0);
repeat
 insert into tmp values (null,v,0,0);
 set v = v + 1;
until v >= max
end repeat;
end

解决方案 »

  1.   

    利用date_add函数,可以实现你的循环。
      

  2.   

    set v=v+interval 1 day
      

  3.   

    日期加减用 date = date + INTERVAL 1 DAY/MONTH;
      

  4.   

     set v = DATE_ADD(v,INTERVAL 1 day)
      

  5.   

    此题可以参考 如何生成指定日期之间的日期列表?
    其中列出了MySQL中存储过程实现方式,核心是循环加上
    insert into date_intervals values(thisDate);
    set thisDate=thisDate + interval 1 day;
      

  6.   

    计算好最小时间和最大时间之间的差多少天,直接修改 过程中的 85 (循环次数)为那个数字,即可,  @theTime 为你要的结果,concat(@theTime,' 08:00:00')为时间格式:
    BEGIN
      DECLARE ps_count INT DEFAULT 0;
      WHILE ps_count < 85
      DO
    SET @theTime = date_add('2013-06-15', INTERVAL ps_count DAY);
        INSERT INTO `isa_pbxx` (`jgm`, `gtid`, `gybh`, `gyxm`, `dqrq`, `pbbz`, `qrsj`, `qcsj`) VALUES 
    ('22222', '1', '88801', '张无忌', @theTime, NULL, concat(@theTime,' 08:00:00'), concat(@theTime,' 18:00:00')) ,
    ('22299', '31', '99922', '梅超风', @theTime, NULL, concat(@theTime, ' 08:00:00'), concat(@theTime, ' 18:00:00'));
    SET ps_count = ps_count + 1;
      END WHILE;
    END