我是 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 ;
关于mysql - DECLARE 在此位置无效,需要 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62217194/