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