MYSQL while 循环添加日期的过程

MYSQL Procedure for while loop to add date

我正在 mysql 中创建一个 table,它需要在 2000-01-01 00:00:00 到 2020-01-01 [= 之间以 3 小时为间隔添加递增日期19=].

我创建了一个 table my_table,他的主键是 time_key。 我做了这个程序来创建一个 while 循环来将日期插入 table.

mysql> CREATE PROCEDURE loop_date()
    -> BEGIN 
    -> SET @dateStart DEFAULT '2021-01-01 03:00:00';
    -> WHILE (dateStart < '2020-01-01 00:00:00') DO
    -> INSERT INTO my_table(time_key) VALUES (dateStart);
    -> set dateStart = dateStart + INTERVAL 3 HOUR;
    -> END WHILE;
    -> END;
    -> //
    -> DELIMITER;
 
    -> CALL loop_date();

我在字段列表

中收到错误 1054 未知列 'dateStart'

我注意到的第一个问题是 dateStart 需要在 DECLARE 语句中有一个数据类型。在这种情况下,它应该是 DATETIME。 dateStart 也大于 while 语句中的值。所以 while 循环永远不会执行。

试试这个:

DELIMITER //

CREATE PROCEDURE loop_date()
BEGIN
    DECLARE dateStart DATETIME DEFAULT '2019-01-01 03:00:00';
    
    WHILE (dateStart < '2020-01-01 00:00:00') DO
        INSERT INTO my_table(time_key) VALUES (dateStart);
        SET dateStart = dateStart + INTERVAL 3 HOUR;
    END WHILE;
END //

DELIMITER ;

CALL loop_date(); 

对我来说,计算 1 年的差异需要 9.57 秒。

更新:这是对您的原始问题的回应,已更改。