mysql - 如何在mysql usinf while循环中插入日期时间值
问题描述
试图datetime
在 mysql 中插入值但不插入。
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' 附近使用的正确语法;WHILE i <= '2019-07-19 13' 在第 2 行
解决方案
如果这是一个存储过程,你有很多错误 1) 多余的;在做 2) 失踪之前;在插入之后 3) 没有与开始语句匹配的结束语句 4) 集合语句中的括号不正确并且您可能没有设置分隔符。这是一个有效的版本。注意我已经删除了表的 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)
推荐阅读
- settings - 如何通过users.d删除默认的clickhouse用户
- javascript - 如何在javascript幻灯片中更改幻灯片的背景颜色?
- c# - 使用 Asp.Net Core Cookie 身份验证的注销操作
- android - 如何实时获取离线消息 asmack (Android)
- c# - 如何在 Visual Studio C# 中禁用和启用按钮上的单击事件
- c++ - 在macos开发qt应用程序上使用rapidjson时如何获得正确的中文?
- c# - 如何构建类以适应这种类型的 gui 系统?
- python - 用户排名前 10 的自行车站
- sql - PostgreSQL - 帮助比较两个表与三个特定列
- python - 根据通货膨胀调整熊猫美元列