我定义了以下正确编译的过程。
当我调用该过程时,它返回一个错误:
ERROR 1292 (22007): Incorrect date value: ''2012-12-30'' for column 'date_part' at row 11
我认为问题是从光标中获取日期,我将如何解决它?
代码的小描述:我正在遍历不同的表,并收集表中可能存在的每个分区的信息(每个表都按日期分区)
我定义了以下正确编译的过程。
当我调用该过程时,它返回一个错误:
ERROR 1292 (22007): Incorrect date value: ''2012-12-30'' for column 'date_part' at row 11
我认为问题是从光标中获取日期,我将如何解决它?
代码的小描述:我正在遍历不同的表,并收集表中可能存在的每个分区的信息(每个表都按日期分区)
我认为您正在将字符串与日期进行比较,这就是您收到错误的原因..
您可以使用它进行比较:
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;
您在日期值周围有引号:''2012-12-30''
. 应删除外部单引号内的单引号。这不是有效的DATE
字段值。