while循环添加日期的MYSQL程序

Posted

技术标签:

【中文标题】while循环添加日期的MYSQL程序【英文标题】:MYSQL Procedure for while loop to add date 【发布时间】:2021-08-26 18:35:14 【问题描述】:

我正在 mysql 中创建一个表,需要在 2000-01-01 00:00:00 到 2020-01-01 00:00:00 之间添加 3 小时间隔的递增日期。

我创建了一个表 my_table,主键为 time_key。 我做了这个过程来创建一个while循环来将日期插入到表中。

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 unknown column 'dateStart'

【问题讨论】:

您能发布您遇到的错误吗? 我发现问题出在使用声明并将其更改为设置。但是现在我已经改变了,我在字段列表中收到一个新错误 ERROR 1053 unknown column 'dateStart' 【参考方案1】:

我注意到的第一个问题是 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 秒。

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

【讨论】:

谢谢,这解决了我的问题,我的意思是把默认年份设置为 2000 年。运行了 1 分 30 秒!

以上是关于while循环添加日期的MYSQL程序的主要内容,如果未能解决你的问题,请参考以下文章

Python while 循环使用实例

c语言中while的用法

python基础入门while循环 格式化 编码初识

循环结构 while 和 do while 方法使用

第三次实验报告

java - 如何在Java中从MySQL结果集中的while循环中添加值?