如何在mysql usinf while循环中插入日期时间值

时间:2019-07-19 08:22:28

标签: mysql sql

尝试在mysql中插入datetime值,但不插入。

BEGIN
    DECLARE i datetime DEFAULT '2019-01-01 00:00:00';
    WHILE i <= '2019-07-19 13:45:00'; DO
        INSERT INTO support_data.datetime_sequence( date_time ) VALUES(i) 
           SET i = DATE_ADD(select max(date_time) from support_data.datetime_sequence,INTERVAL 1 SECOND);
    END WHILE;

遇到此错误。

  

您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以在'DECLARE i datetime DEFAULT'2019-01-01 00:00:00'附近使用正确的语法;       当我<='2019-07-19 13'在第二行

1 个答案:

答案 0 :(得分:0)

如果这是一个存储过程,则存在许多错误1)多余;在做之前2)失踪;插入3)后没有结束语句与开始语句匹配4)set语句中的括号不正确,并且您可能没有set分隔符。 这是一个有效的版本。注意我删除了表的db限定符,将间隔增加到60秒,并添加了j作为故障安全退出循环。您可以根据自己的目的修改所有这些内容。

drop table if exists datetime_sequence;
create table datetime_sequence(date_time datetime);

drop procedure if exists p;
delimiter $$
create procedure p()
BEGIN
    DECLARE i datetime DEFAULT '2019-01-01 00:00:00';
    declare j int default 0;
    WHILE i <= '2019-07-19 13:45:00' and j < 10 DO
      INSERT INTO datetime_sequence( date_time ) VALUES(i) ;
        SET i = (select DATE_ADD((select max(date_time) from datetime_sequence),INTERVAL 60 SECOND));
        set j = j + 1;   
    END WHILE;
end $$
delimiter ;

call p();

+---------------------+
| date_time           |
+---------------------+
| 2019-01-01 00:00:00 |
| 2019-01-01 00:01:00 |
| 2019-01-01 00:02:00 |
| 2019-01-01 00:03:00 |
| 2019-01-01 00:04:00 |
| 2019-01-01 00:05:00 |
| 2019-01-01 00:06:00 |
| 2019-01-01 00:07:00 |
| 2019-01-01 00:08:00 |
| 2019-01-01 00:09:00 |
+---------------------+
10 rows in set (0.00 sec)