Soy un novato en SQL y estaba tratando de generar fechas dentro de 2 fechas especificadas previamente por mí. Estaba usando el siguiente código, pero aparece un error en el banco de trabajo de MySQL que indica que 'DECLARAR no es válido en esta posición'... ¿Qué estoy haciendo mal?
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 ;El error de sintaxis se debe a que olvidó el ; después de cada declaración.
Hay otros problemas:
@ . Conviértalas en variables ordinarias.VALUES en lugar de SELECT .DATEADD no es una función de MySQL. Tiene DATE_ADD , pero la sintaxis es diferente a la que usó. 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 ;