我试图在MySQL中编写一个将收到两个日期的存储过程。 A从约会和两个约会。我以前写了存储过程,但是我很难知道从哪里开始。
如何对存储过程进行编码,当收到20170101和20170110时,它会将以下内容添加到表中 20170101 20170102 20170103 20170104 20170105 20170106 20170107 20170108 20170109 20170110
我不想简单地为每个值添加一个,因为它们是日期,20170132在现实中并不存在。
谢谢大家
答案 0 :(得分:0)
这可能会对你有帮助。
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 ;