MySQL存储过程日期不递增,循环不终止

时间:2018-11-06 02:01:58

标签: mysql

我正在尝试将日期时间序列插入表中。时间应该增加15分钟,所以我得到了

  • 1/1/2019 00:00
  • 1/1/2019 00:15
  • 1/1/2019 00:30
  • 1/1/2019 01:00

但是我实际上得到的是

  • 1/1/2019 00:00
  • 1/1/2019 00:00
  • 1/1/2019 00:00
  • 1/1/2019 00:00

这是一个真正的简单循环,我只是看不到这里缺少什么。

代码来自SO上的另一篇文章。

谢谢

特里

DELIMITER $$

CREATE DEFINER=`root`@`localhost` PROCEDURE `FillCalendar`(IN `start_date` DATE, IN `end_date` DATE)

BEGIN
    DECLARE crt_date DATE;
    SET crt_date = start_date;
    WHILE crt_date <= end_date DO
        INSERT IGNORE INTO Schedule(StartTime) VALUES(crt_date);
        SET crt_date = ADDDATE(crt_date, INTERVAL 15 MINUTE);
    END WHILE;
    END$$
DELIMITER ;

1 个答案:

答案 0 :(得分:3)

您需要将变量声明为DATETIME,以便它可以保留一天中的时间。 DATE只能保留一个日期,时间始终为00:00

DECLARE crt_date DATETIME;

您可能还希望将过程参数更改为DATETIME