I定义了正确编译的以下过程。MySQL:将光标移入DATE
当我调用程序返回一个错误:
ERROR 1292 (22007): Incorrect date value: ''2012-12-30'' for column 'date_part' at row 11
我认为这个问题是取出由光标之日起,我将如何解决呢?
代码的小描述:我正在通过不同的表循环和收集可能存在于表中(每个表范围按日期分区)
I定义了正确编译的以下过程。MySQL:将光标移入DATE
当我调用程序返回一个错误:
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;
看起来是一个很好的解决方案,我现在试试 – Michael
您是在哪个平台上工作? – sourcecode
select STR_TO_DATE('2013-01-01','%Y-%m-%d') - >将会工作 – Michael
我将程序复制到pastebin中,请撤消downvote – Michael
为什么投票是反对的? – Michael
是您的INFORMATION_SCHEMA.PARTITIONS的PARTITION_DESCRIPTION列表是日期类型吗? – sourcecode