我正在尝试在 MySQL 中编写一个存储过程,它将接收两个日期。一个起始日期和一个两个日期。我以前编写过存储过程,但我不知道从哪里开始。
如何编写一个存储过程,当它收到 20170101 和 20170110 时,它将以下内容添加到表中 20170101 20170102 20170103 20170104 20170105 20170106 20170107 20170108 20170109 20170110
我不想简单地为每个值加一,因为它们是日期,而 20170132 在现实中并不存在。
谢谢大家
最佳答案
这可能对你有帮助。
CREATE TABLE IF NOT EXISTS table_name (field_name VARCHAR(255));
DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `test1`$$
CREATE PROCEDURE `test1`(
IN pi_date_from DATE,
IN pi_date_to DATE
)
READS SQL DATA
BEGIN
SET @countRecordToAdd = 0;
SET @i = 0;
SET @query = 'INSERT INTO table_name (field_name) VALUES ';
SELECT
DATEDIFF(pi_date_to, pi_date_from)
INTO
@countRecordToAdd
;
IF @countRecordToAdd > 0
THEN
label1: LOOP
SET @query = CONCAT(
@query,
" (date_add(\"", pi_date_from, "\", INTERVAL ", @i, " DAY)),"
);
SET @i = @i + 1;
IF @i <= @countRecordToAdd THEN ITERATE label1;END IF;
LEAVE label1;
END LOOP label1;
PREPARE stmt FROM TRIM(TRAILING ',' FROM @query);
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END$$
DELIMITER ;
关于mysql - 如何编写 MySQL 存储过程来添加两个日期之间的一系列记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47430849/