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 秒。
更新:这是对您的原始问题的回应,已更改。
我正在 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 秒。
更新:这是对您的原始问题的回应,已更改。