-1

我定义了以下正确编译的过程。

http://pastebin.com/pBHFctHq

当我调用该过程时,它返回一个错误:

ERROR 1292 (22007): Incorrect date value: ''2012-12-30'' for column 'date_part' at row 11

我认为问题是从光标中获取日期,我将如何解决它?

代码的小描述:我正在遍历不同的表,并收集表中可能存在的每个分区的信息(每个表都按日期分区)

4

2 回答 2

1

我认为您正在将字符串与日期进行比较,这就是您收到错误的原因..
您可以使用它进行比较:

           TO_DATE(PARTITION_DESCRIPTION,'YYYY-MM-DD')      // in oracle this will work

           STR_TO_DATE(PARTITION_DESCRIPTION, '%Y-%m-%d')   // in mysql this will work

           convert(varchar(20),PARTITION_DESCRIPTION,104)   // in ms-sql this will work

所以你的代码看起来像这样:

   BLOCK2: BEGIN
                            DECLARE loop1_eof INT DEFAULT FALSE;

                            DECLARE cur1 CURSOR FOR SELECT TO_DATE(PARTITION_DESCRIPTION,'YYYY-MM-DD')
                            FROM INFORMATION_SCHEMA.PARTITIONS
                            WHERE TABLE_NAME=tmp_title AND TABLE_SCHEMA='test1';    
                            DECLARE CONTINUE HANDLER FOR NOT FOUND SET loop1_eof = TRUE;

                            OPEN cur1;
                            loop1: LOOP
                                    FETCH cur1 INTO date_part;
                                    SELECT max(id) from `test1`.tmp_title where CurrentDate < date_part;
                                    IF loop1_eof THEN
                                            CLOSE cur1;
                                            LEAVE loop1;
                                    END IF;
                            END LOOP loop1;
                    END BLOCK2;
于 2013-01-02T16:27:43.330 回答
0

您在日期值周围有引号:''2012-12-30''. 应删除外部单引号内的单引号。这不是有效的DATE字段值。

于 2013-01-02T16:07:01.343 回答