我想创建一个程序MySQL
是insert
week
s到我(本年度)week
表。但是有一个问题,因为在为下一行添加第一行后,我收到一个错误:number column cannot be null
。我是新手,MySQL
所以我会感谢任何帮助。
CREATE PROCEDURE generateWeeks()
BEGIN
SET @currentYear = YEAR(CURDATE());
SET @nextYear = @currentYear + 1;
SET @startOfCurrentWeek = CURDATE();
WHILE(@currentYear < @nextYear) DO
SET @endOfCurrentWeek = DATE_ADD(@startOfCurrentWeek , INTERVAL 7 DAY);
SET @weekNumber = WEEK(@startOfCurrentWeek, 3) -
WEEK(@startOfCurrentWeek - INTERVAL DAY(@startOfCurrentWeek)-1 DAY, 3) + 1;
INSERT INTO `week` (`number`, `start_date`, `end_date`)
VALUES (@weekNumber, @startOfCurrentWeek, @endOfCurrentWeek);
SET @startOfCurrentWeek = @endOfCurrentWeek + 1;
SET @currentYear = YEAR(@endOfCurrentWeek);
END WHILE;
END //
DELIMITER ;
编辑:表创建:
CREATE TABLE `week` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`number` INT(11) NOT NULL,
`start_date` DATE NOT NULL,
`end_date` DATE NOT NULL
)
为什么第while
一次迭代一切正常(添加行),但在下一次迭代中我得到变量null
值@weekNumber
?
线路:
SET @startOfCurrentWeek = @endOfCurrentWeek + 1;
将变量转换为整数。请改用 date_add。
此外,不要使用用户定义的变量(@endOfCurrentWeek),您最好使用局部变量(声明 v_endOfCurrentWeek 日期)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句