0
나는 70000 레코드가있는 book_meetings 테이블이 있고 약간의 수정이이 데이터를 다른 테이블로 마이 그 레이션하려는 Mysql 저장 프로 시저를 만들었습니다. 레코드는 새 테이블에 삽입되지만 값은 null로 설정됩니다. book_meetings
테이블에서 4 개의 열만 선택하고이를 테이블에 삽입하려고합니다.업데이트 및 Mysql 저장 프로 시저를 사용하여 테이블 행을 삽입합니다
id int
date date
meet_at time
duration_in_hours decimal
는 내가 원하는 것은 위의 값을 기준으로 start_date
및 end_date
을 계산이다. 예를 들어
:이 경우
if date ="2017-09-08" , meet_at is "09:00:00" and duration_in_hours is 1.5
는 start_date will be "2017-09-08 09:10:00"
end_date= start_date_duration_in_hour
end_date will be "2017-09-08 09:10:00"
start_date = concat date and meet_at
end_date = start_date + duration_in_hours
and insert this values in new table
다른 좋은 아이디어는 (
CREATE PROCEDURE book_meetings8()
BEGIN
-- Declare local variables
DECLARE done BOOLEAN DEFAULT 0;
DECLARE meet_at TIME;
DECLARE start_date DATETIME;
DECLARE tmp_date VARCHAR(255);
DECLARE end_date DATETIME;
DECLARE end_recurring_date DATE;
DECLARE date1 DATE ;
DECLARE id INTEGER(11);
DECLARE duration DECIMAL(8,2);
DECLARE minutes INTEGER(11);
-- Declare the cursor
DECLARE iter CURSOR
FOR
SELECT id,date, meet_at,duration_in_hours FROM
book_meetings LIMIT 100;
-- Declare continue handler
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
-- Open the cursor
OPEN iter;
-- Loop through all rows
REPEAT
-- Get order number
FETCH iter INTO id,date1,meet_at,duration;
SET minutes = duration * 60;
SET start_date = CAST(date1 as char) + " "+CAST(meet_at as
char);
SET end_date = CAST(start_date as datetime) + INTERVAL
minutes MINUTE;
INSERT INTO
book_meetings_1(start_date,end_date)
VALUES(start_date,end_date);
-- End of loop
UNTIL done END REPEAT;
-- Close the cursor
CLOSE iter;
END;