#1.创建无索引表User1: CREATE TABLE User1( UserID int NOT NULL, UserName varchar(20), Data varchar(20), Updated datetime, PRIMARY KEY(UserID) ); #2.编写一个存储过程,向User1中插入100000万行数据 delimiter // create procedure filldata() begin SET @ROWCOUNT=1000000; SET @I=0; SET @Now=NOW(); WHILE @I<@ROWCOUNT DO        INSERT INTO User1(UserID, UserName, Data, Updated)        VALUES(@I, CONCAT('User', @I), CONCAT('Data',@I), ADDTIME(@NOW, -1*@I));        SET @I = @I + 1;        IF @I%10000=0 THEN       SELECT @I;        END IF; END WHILE; end; // #3.执行存储过程 call filldata(); 
按照上面的过程, user1表插入数据插入到第59条,就出现下面的错误:15:10:54 call filldata() Error Code: 1292. Truncated incorrect time value: '-60' 2.297 sec初学MySQL,求帮忙,谢谢

解决方案 »

  1.   

    ADDTIME  你后面必须 要TIME类型的范围啊。60 已经 超了吧
    改成
    SELECT DATE_ADD(NOW(),INTERVAL 60 MINUTE) ; 用DATE_ADD 函数
      

  2.   

    类似问题看一下MYSQL官方免费手册中的说明和例子。

    ADDTIME(expr1,expr2) ADDTIME() adds expr2 to expr1 and returns the result. expr1 is a time or datetime expression, and expr2 is a time expression. mysql> SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002');
            -> '2008-01-02 01:01:01.000001'
    mysql> SELECT ADDTIME('01:00:00.999999', '02:00:00.999998');
            -> '03:00:01.999997'