我是SQL的新手,我试图在我指定的2个日期之内生成日期。我正在使用下面的代码,但在MySQL工作台中收到一条错误消息,指出“ DECLARE在此位置无效” ...我在做什么错?
DELIMITER $$
CREATE PROCEDURE proc()
BEGIN
DECLARE @dates TABLE(dt datetime)
DECLARE @dateFrom datetime
DECLARE @dateTo datetime
SET @dateFrom = '2001/01/01'
SET @dateTo = '2001/01/12'
WHILE(@dateFrom < @dateTo)
BEGIN
SELECT @dateFrom = DATEADD(day, 1,@dateFrom)
INSERT INTO @dates
SELECT @dateFrom
END
END$$
DELIMITER ;
语法错误是因为您在每个语句后都忘记了;
。
还有其他问题:
@
开头的用户变量。将它们设置为普通变量。VALUES
而不是SELECT
。DATEADD
不是MySQL函数。它具有DATE_ADD
,但是语法与您使用的语法不同。DELIMITER $$
CREATE PROCEDURE proc()
BEGIN
DECLARE dateFrom datetime;
DECLARE dateTo datetime;
SET dateFrom = '2001-01-01';
SET dateTo = '2001-01-12';
CREATE TEMPORARY TABLE dates (
dt datetime
);
WHILE(dateFrom < dateTo)
BEGIN
SET dateFrom = DATE_ADD(dateFrom, INTERVAL 1 DAY);
INSERT INTO dates VALUES (dateFrom);
END WHILE;
END$$
DELIMITER ;