我是一个SQL新手,我试图在我预先指定的2个日期内生成日期。 我正在使用下面的代码,但我在MySQL工作台中得到一个错误,声明“声明在此位置无效”。 我做错了什么?
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 ;