所以我在我的数据库中有一个名为"周"在这里我每年都会这样存储:
table weeks(id, year, num_week, date_min, date_max)
注意:我的周从周四开始,到周三结束。
由于每周逐行插入一个痛苦,我想为此创建一个存储过程,这就是我想出的:
DELIMITER |
CREATE PROCEDURE proc_insert_weeks()
BEGIN
SELECT year, num_week, date_min, date_max INTO @year, @num_week, @date_min, @date_max
FROM weeks
ORDER BY date_min DESC LIMIT 1;
SET @date_min = DATE_ADD(@date_max INTERVAL 1 DAY);
SET @date_max = DATE_ADD(@date_min INTERVAL 6 DAY);
SET @year= YEAR(@date_min);
IF @num_week < 52 THEN SET @num_week = @num_week + 1;
ELSE SET @num_week = 1;
END IF;
INSERT INTO weeks (year, num_week, date_min, date_max)
VALUES (@year, @num_week, @date_min, @date_max);
END |
DELIMITER ;
所以我的想法是拿下表格的最后一条记录并在日期中添加1周,但我甚至无法粘贴程序的创建。
我在SELECT查询后立即收到错误,有人可以帮我弄清楚我做错了吗?
答案 0 :(得分:1)
drop PROCEDURE proc_insert_weeks;
DELIMITER |
CREATE PROCEDURE proc_insert_weeks()
BEGIN
SELECT year, num_week, date_min, date_max INTO @year, @num_week, @date_min, @date_max
FROM weeks
ORDER BY date_min DESC LIMIT 1;
SET @date_min = DATE_ADD(@date_max, INTERVAL 1 DAY);
SET @date_max = DATE_ADD(@date_min, INTERVAL 6 DAY);
SET @year= YEAR(@date_min);
IF @num_week < 52 THEN SET @num_week = @num_week + 1;
ELSE SET @num_week = 1;
END IF;
INSERT INTO weeks (year, num_week, date_min, date_max)
VALUES (@year, @num_week, @date_min, @date_max);
END |
DELIMITER ;
您可以尝试以上代码。
你在DATE_ADD
函数中犯了错误。你错过了,
。